﻿// ************************************************************************ //
// WARNING                                                                    
// -------                                                                    
// The types declared in this file were generated from data read from a       
// Type Library. If this type library is explicitly or indirectly (via        
// another type library referring to this type library) re-imported, or the   
// 'Refresh' command of the Type Library Editor activated while editing the   
// Type Library, the contents of this file will be regenerated and all        
// manual modifications will be lost.                                         
// ************************************************************************ //

// $Rev: 52393 $
// File generated on 24.05.2021 12:54:47 from Type Library described below.

// ************************************************************************  //
// Type Lib: kAPI3D5COM.tlb (1)
// LIBID: {006C01C3-FA63-4F20-B930-CCE6DD3A9236}
// LCID: 0
// Helpfile: 
// HelpString: 
// DepndLst: 
//   (1) v2.0 stdole, (stdole2.tlb)
//   (2) v1.0 Kompas6API2D5COM, (kAPI2D5COM.tlb)
// SYS_KIND: SYS_WIN32
// ************************************************************************ //
#ifndef   Kompas6API3D5COM_TLBH
#define   Kompas6API3D5COM_TLBH

#pragma option push -b -a4 -w-inl -w-8118

#if !defined(__UTILCLS_H)
#include <utilcls.h>
#endif
#if !defined(__UTILCLS_H_VERSION) || (__UTILCLS_H_VERSION < 0x0500)
//
// The code generated by the TLIBIMP utility or the Import|TypeLibrary 
// and Import|ActiveX feature of C++Builder rely on specific versions of
// the header file UTILCLS.H found in the INCLUDE\VCL directory. If an 
// older version of the file is detected, you probably need an update/patch.
//
#error "This file requires a newer version of the header UTILCLS.H" \
       "You need to apply an update/patch to your copy of C++Builder"
#endif
#include <olectl.h>
#include <ocidl.h>
#if defined(USING_ATLVCL) || defined(USING_ATL)
#if !defined(__TLB_NO_EVENT_WRAPPERS)
#include <atl/atlmod.h>
#endif
#endif
#include "Kompas6API2D5COM_TLB.h"


namespace Kompas6api3d5com_tlb
{

// *********************************************************************//
// HelpString: 
// Version:    1.0
// *********************************************************************//


// *********************************************************************//
// GUIDS declared in the TypeLibrary. Following prefixes are used:        
//   Type Libraries     : LIBID_xxxx                                      
//   CoClasses          : CLSID_xxxx                                      
//   DISPInterfaces     : DIID_xxxx                                       
//   Non-DISP interfaces: IID_xxxx                                        
// *********************************************************************//
extern __declspec (package) const GUID LIBID_Kompas6API3D5COM;
extern __declspec (package) const GUID IID_IDocument3D;
extern __declspec (package) const GUID IID_IPart;
extern __declspec (package) const GUID IID_IColorParam;
extern __declspec (package) const GUID IID_IEntity;
extern __declspec (package) const GUID IID_IFeature;
extern __declspec (package) const GUID IID_IFeatureCollection;
extern __declspec (package) const GUID IID_IAttribute3DCollection;
extern __declspec (package) const GUID IID_IAttribute3D;
extern __declspec (package) const GUID IID_IEntityCollection;
extern __declspec (package) const GUID IID_IVariableCollection;
extern __declspec (package) const GUID IID_IVariable;
extern __declspec (package) const GUID IID_IBodyCollection;
extern __declspec (package) const GUID IID_IBody;
extern __declspec (package) const GUID IID_IFaceCollection;
extern __declspec (package) const GUID IID_IFaceDefinition;
extern __declspec (package) const GUID IID_ISurface;
extern __declspec (package) const GUID IID_ICurve3D;
extern __declspec (package) const GUID IID_INurbs3dParam;
extern __declspec (package) const GUID IID_INurbsPoint3dCollection;
extern __declspec (package) const GUID IID_INurbsPoint3dParam;
extern __declspec (package) const GUID IID_INurbsKnotCollection;
extern __declspec (package) const GUID IID_ICoordinate3dCollection;
extern __declspec (package) const GUID IID_INurbsSurfaceParam;
extern __declspec (package) const GUID IID_INurbsPoint3dCollCollection;
extern __declspec (package) const GUID IID_ILoopCollection;
extern __declspec (package) const GUID IID_ILoop;
extern __declspec (package) const GUID IID_IOrientedEdgeCollection;
extern __declspec (package) const GUID IID_IOrientedEdge;
extern __declspec (package) const GUID IID_IEdgeDefinition;
extern __declspec (package) const GUID IID_IVertexDefinition;
extern __declspec (package) const GUID IID_IEdgeCollection;
extern __declspec (package) const GUID IID_ITessellation;
extern __declspec (package) const GUID IID_IFacet;
extern __declspec (package) const GUID IID_IMassInertiaParam;
extern __declspec (package) const GUID IID_IIntersectionResult;
extern __declspec (package) const GUID IID_IBodyParts;
extern __declspec (package) const GUID IID_IPlacement;
extern __declspec (package) const GUID IID_IMeasurer;
extern __declspec (package) const GUID IID_IObject3DNotifyResult;
extern __declspec (package) const GUID IID_IPartCollection;
extern __declspec (package) const GUID IID_IRequestInfo;
extern __declspec (package) const GUID IID_IMateConstraintCollection;
extern __declspec (package) const GUID IID_IMateConstraint;
extern __declspec (package) const GUID IID_ISpecification3D;
extern __declspec (package) const GUID IID_IRasterFormatParam;
extern __declspec (package) const GUID IID_IAdditionFormatParam;
extern __declspec (package) const GUID IID_IViewProjectionCollection;
extern __declspec (package) const GUID IID_IViewProjection;
extern __declspec (package) const GUID IID_ISelectionMng;
extern __declspec (package) const GUID IID_IChooseMng;
extern __declspec (package) const GUID IID_IComponentPositioner;
extern __declspec (package) const GUID IID_IDocument3DNotifyResult;
extern __declspec (package) const GUID IID_IModelLibrary;
extern __declspec (package) const GUID IID_IThinParam;
extern __declspec (package) const GUID IID_IExtrusionParam;
extern __declspec (package) const GUID IID_IRotatedParam;
extern __declspec (package) const GUID IID_IObjectsFilter3D;
extern __declspec (package) const GUID IID_IChooseBodies;
extern __declspec (package) const GUID IID_IChooseParts;
extern __declspec (package) const GUID IID_ISketchDefinition;
extern __declspec (package) const GUID IID_IThreadDefinition;
extern __declspec (package) const GUID IID_IAxis2PointsDefinition;
extern __declspec (package) const GUID IID_IAxis2PlanesDefinition;
extern __declspec (package) const GUID IID_IAxisOperationsDefinition;
extern __declspec (package) const GUID IID_IAxisEdgeDefinition;
extern __declspec (package) const GUID IID_IPlaneOffsetDefinition;
extern __declspec (package) const GUID IID_IPlane3PointsDefinition;
extern __declspec (package) const GUID IID_IPlaneAngleDefinition;
extern __declspec (package) const GUID IID_IPlaneEdgePointDefinition;
extern __declspec (package) const GUID IID_IPlaneParallelDefinition;
extern __declspec (package) const GUID IID_IPlanePerpendicularDefinition;
extern __declspec (package) const GUID IID_IPlaneNormalToSurfaceDefinition;
extern __declspec (package) const GUID IID_IPlaneTangentToSurfaceDefinition;
extern __declspec (package) const GUID IID_IPlaneLineToEdgeDefinition;
extern __declspec (package) const GUID IID_IPlaneLineToPlaneDefinition;
extern __declspec (package) const GUID IID_IBaseExtrusionDefinition;
extern __declspec (package) const GUID IID_IBossExtrusionDefinition;
extern __declspec (package) const GUID IID_ICutExtrusionDefinition;
extern __declspec (package) const GUID IID_IBaseRotatedDefinition;
extern __declspec (package) const GUID IID_IBossRotatedDefinition;
extern __declspec (package) const GUID IID_ICutRotatedDefinition;
extern __declspec (package) const GUID IID_IBaseLoftDefinition;
extern __declspec (package) const GUID IID_IBossLoftDefinition;
extern __declspec (package) const GUID IID_ICutLoftDefinition;
extern __declspec (package) const GUID IID_IBaseEvolutionDefinition;
extern __declspec (package) const GUID IID_IBossEvolutionDefinition;
extern __declspec (package) const GUID IID_ICutEvolutionDefinition;
extern __declspec (package) const GUID IID_IFilletDefinition;
extern __declspec (package) const GUID IID_IChamferDefinition;
extern __declspec (package) const GUID IID_IShellDefinition;
extern __declspec (package) const GUID IID_ICopyMeshDefinition;
extern __declspec (package) const GUID IID_IDeletedCopyCollection;
extern __declspec (package) const GUID IID_ICopyCircularDefinition;
extern __declspec (package) const GUID IID_ICopyCurveDefinition;
extern __declspec (package) const GUID IID_IMirrorDefinition;
extern __declspec (package) const GUID IID_IMirrorAllDefinition;
extern __declspec (package) const GUID IID_ICutByPlaneDefinition;
extern __declspec (package) const GUID IID_ICutBySketchDefinition;
extern __declspec (package) const GUID IID_IMeshPartArrayDefinition;
extern __declspec (package) const GUID IID_ICircularPartArrayDefinition;
extern __declspec (package) const GUID IID_ICurvePartArrayDefinition;
extern __declspec (package) const GUID IID_IDerivativePartArrayDefinition;
extern __declspec (package) const GUID IID_IInclineDefinition;
extern __declspec (package) const GUID IID_IRibDefinition;
extern __declspec (package) const GUID IID_IImportedSurfaceDefinition;
extern __declspec (package) const GUID IID_IPolygonalLineDefinition;
extern __declspec (package) const GUID IID_IPolygonalLineVertexParam;
extern __declspec (package) const GUID IID_IConicSpiralDefinition;
extern __declspec (package) const GUID IID_ISplineDefinition;
extern __declspec (package) const GUID IID_ICylindricSpiralDefinition;
extern __declspec (package) const GUID IID_IEvolutionSurfaceDefinition;
extern __declspec (package) const GUID IID_IExtrusionSurfaceDefinition;
extern __declspec (package) const GUID IID_IRotatedSurfaceDefinition;
extern __declspec (package) const GUID IID_ILoftSurfaceDefinition;
extern __declspec (package) const GUID IID_IMacro3DDefinition;
extern __declspec (package) const GUID IID_IAxisConefaceDefinition;
extern __declspec (package) const GUID IID_IUnionComponentsDefinition;
extern __declspec (package) const GUID IID_IMoldCavityDefinition;
extern __declspec (package) const GUID IID_IPlaneMiddleDefinition;
extern __declspec (package) const GUID IID_IControlPointDefinition;
extern __declspec (package) const GUID IID_IConjunctivePointDefinition;
extern __declspec (package) const GUID IID_IAggregateDefinition;
extern __declspec (package) const GUID IID_IDefaultObject;
extern __declspec (package) const GUID IID_IEmbodiment3D;
extern __declspec (package) const GUID IID_ILineSeg3dParam;
extern __declspec (package) const GUID IID_ICircle3dParam;
extern __declspec (package) const GUID IID_IEllipse3dParam;
extern __declspec (package) const GUID IID_IPlaneParam;
extern __declspec (package) const GUID IID_IConeParam;
extern __declspec (package) const GUID IID_ICylinderParam;
extern __declspec (package) const GUID IID_ISphereParam;
extern __declspec (package) const GUID IID_ITorusParam;
extern __declspec (package) const GUID IID_IArc3dParam;
extern __declspec (package) const GUID IID_ISTrackingPointsMeasurer;
extern __declspec (package) const GUID IID_IDocument3DNotify;
extern __declspec (package) const GUID IID_IObject3DNotify;
extern __declspec (package) const GUID IID_IProcess3DNotify;
extern __declspec (package) const GUID IID_IProcess3DManipulatorsNotify;

// *********************************************************************//
// Forward declaration of types defined in TypeLibrary                    
// *********************************************************************//
interface DECLSPEC_UUID("{7AA0E540-0302-11D4-A30E-00C026EE094F}") IDocument3D;
typedef TComInterface<IDocument3D, &IID_IDocument3D> IDocument3DPtr;

interface DECLSPEC_UUID("{7AA0E540-0300-11D4-A30E-00C026EE094F}") IPart;
typedef TComInterface<IPart, &IID_IPart> IPartPtr;

interface DECLSPEC_UUID("{7AA0E540-0305-11D4-A30E-00C026EE094F}") IColorParam;
typedef TComInterface<IColorParam, &IID_IColorParam> IColorParamPtr;

interface DECLSPEC_UUID("{7AA0E540-0301-11D4-A30E-00C026EE094F}") IEntity;
typedef TComInterface<IEntity, &IID_IEntity> IEntityPtr;

interface DECLSPEC_UUID("{1D15245B-695E-4F9F-AFCA-EACBC3A055BB}") IFeature;
typedef TComInterface<IFeature, &IID_IFeature> IFeaturePtr;

interface DECLSPEC_UUID("{CE5D4888-9006-43AC-9ACC-6D9E58B408B4}") IFeatureCollection;
typedef TComInterface<IFeatureCollection, &IID_IFeatureCollection> IFeatureCollectionPtr;

interface DECLSPEC_UUID("{E17C2BE7-9C11-4FB3-ADBD-04EC912784E8}") IAttribute3DCollection;
typedef TComInterface<IAttribute3DCollection, &IID_IAttribute3DCollection> IAttribute3DCollectionPtr;

interface DECLSPEC_UUID("{F5529801-EDF2-42AE-B0A4-8AB6F5650AE1}") IAttribute3D;
typedef TComInterface<IAttribute3D, &IID_IAttribute3D> IAttribute3DPtr;

interface DECLSPEC_UUID("{7AA0E540-0303-11D4-A30E-00C026EE094F}") IEntityCollection;
typedef TComInterface<IEntityCollection, &IID_IEntityCollection> IEntityCollectionPtr;

interface DECLSPEC_UUID("{7AA0E540-0311-11D4-A30E-00C026EE094F}") IVariableCollection;
typedef TComInterface<IVariableCollection, &IID_IVariableCollection> IVariableCollectionPtr;

interface DECLSPEC_UUID("{7AA0E540-0312-11D4-A30E-00C026EE094F}") IVariable;
typedef TComInterface<IVariable, &IID_IVariable> IVariablePtr;

interface DECLSPEC_UUID("{64CBC7CB-005D-47DF-8B3E-53FD974C5A32}") IBodyCollection;
typedef TComInterface<IBodyCollection, &IID_IBodyCollection> IBodyCollectionPtr;

interface DECLSPEC_UUID("{BE70EEE5-1767-483E-9D18-79BCEC5AB837}") IBody;
typedef TComInterface<IBody, &IID_IBody> IBodyPtr;

interface DECLSPEC_UUID("{D269AD47-B2CC-4152-A7BA-127242371208}") IFaceCollection;
typedef TComInterface<IFaceCollection, &IID_IFaceCollection> IFaceCollectionPtr;

interface DECLSPEC_UUID("{7AA0E540-0322-11D4-A30E-00C026EE094F}") IFaceDefinition;
typedef TComInterface<IFaceDefinition, &IID_IFaceDefinition> IFaceDefinitionPtr;

interface DECLSPEC_UUID("{081C7F2D-D5BC-40A6-92FE-C16B67D10B75}") ISurface;
typedef TComInterface<ISurface, &IID_ISurface> ISurfacePtr;

interface DECLSPEC_UUID("{E5066490-773D-4289-A60B-2FC19865174A}") ICurve3D;
typedef TComInterface<ICurve3D, &IID_ICurve3D> ICurve3DPtr;

interface DECLSPEC_UUID("{0363CD73-028A-485F-92BF-B4DB4B3E239A}") INurbs3dParam;
typedef TComInterface<INurbs3dParam, &IID_INurbs3dParam> INurbs3dParamPtr;

interface DECLSPEC_UUID("{AC0E0F4D-ACCE-40C4-9B7C-14DAAF224F48}") INurbsPoint3dCollection;
typedef TComInterface<INurbsPoint3dCollection, &IID_INurbsPoint3dCollection> INurbsPoint3dCollectionPtr;

interface DECLSPEC_UUID("{47CDB649-C027-4E8D-8E25-1461CC6D7C12}") INurbsPoint3dParam;
typedef TComInterface<INurbsPoint3dParam, &IID_INurbsPoint3dParam> INurbsPoint3dParamPtr;

interface DECLSPEC_UUID("{1F21432C-E5BA-404D-B18F-007A0D85CCD0}") INurbsKnotCollection;
typedef TComInterface<INurbsKnotCollection, &IID_INurbsKnotCollection> INurbsKnotCollectionPtr;

interface DECLSPEC_UUID("{A5E6E83E-1F33-4EAF-BAFC-A3F434F23BAA}") ICoordinate3dCollection;
typedef TComInterface<ICoordinate3dCollection, &IID_ICoordinate3dCollection> ICoordinate3dCollectionPtr;

interface DECLSPEC_UUID("{A5A1CB44-5F2E-4059-86B3-4F5056EFF956}") INurbsSurfaceParam;
typedef TComInterface<INurbsSurfaceParam, &IID_INurbsSurfaceParam> INurbsSurfaceParamPtr;

interface DECLSPEC_UUID("{EFEECE8A-4BB9-4D51-B6A4-AC1BEDA73568}") INurbsPoint3dCollCollection;
typedef TComInterface<INurbsPoint3dCollCollection, &IID_INurbsPoint3dCollCollection> INurbsPoint3dCollCollectionPtr;

interface DECLSPEC_UUID("{22866947-F414-484B-8CCC-F4440BFEF92F}") ILoopCollection;
typedef TComInterface<ILoopCollection, &IID_ILoopCollection> ILoopCollectionPtr;

interface DECLSPEC_UUID("{56965A12-03BB-4068-8AE9-BEFC23EEEB37}") ILoop;
typedef TComInterface<ILoop, &IID_ILoop> ILoopPtr;

interface DECLSPEC_UUID("{D19B0A07-4CA6-4E77-A8DB-8AC8C7123124}") IOrientedEdgeCollection;
typedef TComInterface<IOrientedEdgeCollection, &IID_IOrientedEdgeCollection> IOrientedEdgeCollectionPtr;

interface DECLSPEC_UUID("{42AA4E40-4415-4C79-8B8C-480E5AFDB79A}") IOrientedEdge;
typedef TComInterface<IOrientedEdge, &IID_IOrientedEdge> IOrientedEdgePtr;

interface DECLSPEC_UUID("{7AA0E540-0321-11D4-A30E-00C026EE094F}") IEdgeDefinition;
typedef TComInterface<IEdgeDefinition, &IID_IEdgeDefinition> IEdgeDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0320-11D4-A30E-00C026EE094F}") IVertexDefinition;
typedef TComInterface<IVertexDefinition, &IID_IVertexDefinition> IVertexDefinitionPtr;

interface DECLSPEC_UUID("{5E93D4B9-BAAB-4FC4-ACF8-8FF78E9D1B42}") IEdgeCollection;
typedef TComInterface<IEdgeCollection, &IID_IEdgeCollection> IEdgeCollectionPtr;

interface DECLSPEC_UUID("{5F12CD9D-4310-4A6B-B4B8-B1445ABB36D8}") ITessellation;
typedef TComInterface<ITessellation, &IID_ITessellation> ITessellationPtr;

interface DECLSPEC_UUID("{1EED6C22-25D4-49C6-B76A-90B768966A3B}") IFacet;
typedef TComInterface<IFacet, &IID_IFacet> IFacetPtr;

interface DECLSPEC_UUID("{74E97440-88A5-4D29-9543-59D775BC9A13}") IMassInertiaParam;
typedef TComInterface<IMassInertiaParam, &IID_IMassInertiaParam> IMassInertiaParamPtr;

interface DECLSPEC_UUID("{66CBDD80-332C-40B5-9968-DD902EBAB55D}") IIntersectionResult;
typedef TComInterface<IIntersectionResult, &IID_IIntersectionResult> IIntersectionResultPtr;

interface DECLSPEC_UUID("{DFC4E0F1-5270-40F3-8A4F-BEA75AB5383C}") IBodyParts;
typedef TComInterface<IBodyParts, &IID_IBodyParts> IBodyPartsPtr;

interface DECLSPEC_UUID("{7AA0E540-0310-11D4-A30E-00C026EE094F}") IPlacement;
typedef TComInterface<IPlacement, &IID_IPlacement> IPlacementPtr;

interface DECLSPEC_UUID("{AC171655-ED3F-4F7A-A625-44083941AF85}") IMeasurer;
typedef TComInterface<IMeasurer, &IID_IMeasurer> IMeasurerPtr;

interface DECLSPEC_UUID("{6B04A0E4-837A-4151-8E5A-836517F39EAE}") IObject3DNotifyResult;
typedef TComInterface<IObject3DNotifyResult, &IID_IObject3DNotifyResult> IObject3DNotifyResultPtr;

interface DECLSPEC_UUID("{7AA0E540-0317-11D4-A30E-00C026EE094F}") IPartCollection;
typedef TComInterface<IPartCollection, &IID_IPartCollection> IPartCollectionPtr;

interface DECLSPEC_UUID("{7AA0E540-0313-11D4-A30E-00C026EE094F}") IRequestInfo;
typedef TComInterface<IRequestInfo, &IID_IRequestInfo> IRequestInfoPtr;

interface DECLSPEC_UUID("{7AA0E540-0304-11D4-A30E-00C026EE094F}") IMateConstraintCollection;
typedef TComInterface<IMateConstraintCollection, &IID_IMateConstraintCollection> IMateConstraintCollectionPtr;

interface DECLSPEC_UUID("{7AA0E540-0314-11D4-A30E-00C026EE094F}") IMateConstraint;
typedef TComInterface<IMateConstraint, &IID_IMateConstraint> IMateConstraintPtr;

interface DECLSPEC_UUID("{7AA0E540-0315-11D4-A30E-00C026EE094F}") ISpecification3D;
typedef TComInterface<ISpecification3D, &IID_ISpecification3D> ISpecification3DPtr;

interface DECLSPEC_UUID("{7AA0E540-0318-11D4-A30E-00C026EE094F}") IRasterFormatParam;
typedef TComInterface<IRasterFormatParam, &IID_IRasterFormatParam> IRasterFormatParamPtr;

interface DECLSPEC_UUID("{7AA0E540-0319-11D4-A30E-00C026EE094F}") IAdditionFormatParam;
typedef TComInterface<IAdditionFormatParam, &IID_IAdditionFormatParam> IAdditionFormatParamPtr;

interface DECLSPEC_UUID("{F6EDDAE7-AA95-4474-835E-BEB4BC25BAA8}") IViewProjectionCollection;
typedef TComInterface<IViewProjectionCollection, &IID_IViewProjectionCollection> IViewProjectionCollectionPtr;

interface DECLSPEC_UUID("{737D35AF-C407-420D-9250-A2CBB416DCB9}") IViewProjection;
typedef TComInterface<IViewProjection, &IID_IViewProjection> IViewProjectionPtr;

interface DECLSPEC_UUID("{974E5E66-7948-401D-8DAE-C497A6BF1EBD}") ISelectionMng;
typedef TComInterface<ISelectionMng, &IID_ISelectionMng> ISelectionMngPtr;

interface DECLSPEC_UUID("{BB679D6E-1C5A-4B90-A559-CB37BA1E1FA7}") IChooseMng;
typedef TComInterface<IChooseMng, &IID_IChooseMng> IChooseMngPtr;

interface DECLSPEC_UUID("{6B9D0CE9-C3E6-436B-9EEE-02F439A45C02}") IComponentPositioner;
typedef TComInterface<IComponentPositioner, &IID_IComponentPositioner> IComponentPositionerPtr;

interface DECLSPEC_UUID("{06C34A3C-2634-4F82-BCE0-F3D73572958C}") IDocument3DNotifyResult;
typedef TComInterface<IDocument3DNotifyResult, &IID_IDocument3DNotifyResult> IDocument3DNotifyResultPtr;

interface DECLSPEC_UUID("{7AA0E540-0316-11D4-A30E-00C026EE094F}") IModelLibrary;
typedef TComInterface<IModelLibrary, &IID_IModelLibrary> IModelLibraryPtr;

interface DECLSPEC_UUID("{7AA0E540-0306-11D4-A30E-00C026EE094F}") IThinParam;
typedef TComInterface<IThinParam, &IID_IThinParam> IThinParamPtr;

interface DECLSPEC_UUID("{7AA0E540-0307-11D4-A30E-00C026EE094F}") IExtrusionParam;
typedef TComInterface<IExtrusionParam, &IID_IExtrusionParam> IExtrusionParamPtr;

interface DECLSPEC_UUID("{7AA0E540-0308-11D4-A30E-00C026EE094F}") IRotatedParam;
typedef TComInterface<IRotatedParam, &IID_IRotatedParam> IRotatedParamPtr;

interface DECLSPEC_UUID("{16EAD9EF-671F-4557-9954-BB070864F638}") IObjectsFilter3D;
typedef TComInterface<IObjectsFilter3D, &IID_IObjectsFilter3D> IObjectsFilter3DPtr;

interface DECLSPEC_UUID("{67B417BA-F248-4B56-AD03-C4057C7F2EEE}") IChooseBodies;
typedef TComInterface<IChooseBodies, &IID_IChooseBodies> IChooseBodiesPtr;

interface DECLSPEC_UUID("{2920B89D-636E-4DCC-8E62-34D2F4B4BB00}") IChooseParts;
typedef TComInterface<IChooseParts, &IID_IChooseParts> IChoosePartsPtr;

interface DECLSPEC_UUID("{7AA0E540-0323-11D4-A30E-00C026EE094F}") ISketchDefinition;
typedef TComInterface<ISketchDefinition, &IID_ISketchDefinition> ISketchDefinitionPtr;

interface DECLSPEC_UUID("{44ABB63A-E6F2-47C5-945C-5C17D0477CE0}") IThreadDefinition;
typedef TComInterface<IThreadDefinition, &IID_IThreadDefinition> IThreadDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0335-11D4-A30E-00C026EE094F}") IAxis2PointsDefinition;
typedef TComInterface<IAxis2PointsDefinition, &IID_IAxis2PointsDefinition> IAxis2PointsDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0336-11D4-A30E-00C026EE094F}") IAxis2PlanesDefinition;
typedef TComInterface<IAxis2PlanesDefinition, &IID_IAxis2PlanesDefinition> IAxis2PlanesDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0337-11D4-A30E-00C026EE094F}") IAxisOperationsDefinition;
typedef TComInterface<IAxisOperationsDefinition, &IID_IAxisOperationsDefinition> IAxisOperationsDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0339-11D4-A30E-00C026EE094F}") IAxisEdgeDefinition;
typedef TComInterface<IAxisEdgeDefinition, &IID_IAxisEdgeDefinition> IAxisEdgeDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0341-11D4-A30E-00C026EE094F}") IPlaneOffsetDefinition;
typedef TComInterface<IPlaneOffsetDefinition, &IID_IPlaneOffsetDefinition> IPlaneOffsetDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0342-11D4-A30E-00C026EE094F}") IPlane3PointsDefinition;
typedef TComInterface<IPlane3PointsDefinition, &IID_IPlane3PointsDefinition> IPlane3PointsDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0343-11D4-A30E-00C026EE094F}") IPlaneAngleDefinition;
typedef TComInterface<IPlaneAngleDefinition, &IID_IPlaneAngleDefinition> IPlaneAngleDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0344-11D4-A30E-00C026EE094F}") IPlaneEdgePointDefinition;
typedef TComInterface<IPlaneEdgePointDefinition, &IID_IPlaneEdgePointDefinition> IPlaneEdgePointDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0345-11D4-A30E-00C026EE094F}") IPlaneParallelDefinition;
typedef TComInterface<IPlaneParallelDefinition, &IID_IPlaneParallelDefinition> IPlaneParallelDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0346-11D4-A30E-00C026EE094F}") IPlanePerpendicularDefinition;
typedef TComInterface<IPlanePerpendicularDefinition, &IID_IPlanePerpendicularDefinition> IPlanePerpendicularDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0347-11D4-A30E-00C026EE094F}") IPlaneNormalToSurfaceDefinition;
typedef TComInterface<IPlaneNormalToSurfaceDefinition, &IID_IPlaneNormalToSurfaceDefinition> IPlaneNormalToSurfaceDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0348-11D4-A30E-00C026EE094F}") IPlaneTangentToSurfaceDefinition;
typedef TComInterface<IPlaneTangentToSurfaceDefinition, &IID_IPlaneTangentToSurfaceDefinition> IPlaneTangentToSurfaceDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0349-11D4-A30E-00C026EE094F}") IPlaneLineToEdgeDefinition;
typedef TComInterface<IPlaneLineToEdgeDefinition, &IID_IPlaneLineToEdgeDefinition> IPlaneLineToEdgeDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0350-11D4-A30E-00C026EE094F}") IPlaneLineToPlaneDefinition;
typedef TComInterface<IPlaneLineToPlaneDefinition, &IID_IPlaneLineToPlaneDefinition> IPlaneLineToPlaneDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0355-11D4-A30E-00C026EE094F}") IBaseExtrusionDefinition;
typedef TComInterface<IBaseExtrusionDefinition, &IID_IBaseExtrusionDefinition> IBaseExtrusionDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0356-11D4-A30E-00C026EE094F}") IBossExtrusionDefinition;
typedef TComInterface<IBossExtrusionDefinition, &IID_IBossExtrusionDefinition> IBossExtrusionDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0357-11D4-A30E-00C026EE094F}") ICutExtrusionDefinition;
typedef TComInterface<ICutExtrusionDefinition, &IID_ICutExtrusionDefinition> ICutExtrusionDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0358-11D4-A30E-00C026EE094F}") IBaseRotatedDefinition;
typedef TComInterface<IBaseRotatedDefinition, &IID_IBaseRotatedDefinition> IBaseRotatedDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0359-11D4-A30E-00C026EE094F}") IBossRotatedDefinition;
typedef TComInterface<IBossRotatedDefinition, &IID_IBossRotatedDefinition> IBossRotatedDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0360-11D4-A30E-00C026EE094F}") ICutRotatedDefinition;
typedef TComInterface<ICutRotatedDefinition, &IID_ICutRotatedDefinition> ICutRotatedDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0361-11D4-A30E-00C026EE094F}") IBaseLoftDefinition;
typedef TComInterface<IBaseLoftDefinition, &IID_IBaseLoftDefinition> IBaseLoftDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0362-11D4-A30E-00C026EE094F}") IBossLoftDefinition;
typedef TComInterface<IBossLoftDefinition, &IID_IBossLoftDefinition> IBossLoftDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0363-11D4-A30E-00C026EE094F}") ICutLoftDefinition;
typedef TComInterface<ICutLoftDefinition, &IID_ICutLoftDefinition> ICutLoftDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0364-11D4-A30E-00C026EE094F}") IBaseEvolutionDefinition;
typedef TComInterface<IBaseEvolutionDefinition, &IID_IBaseEvolutionDefinition> IBaseEvolutionDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0365-11D4-A30E-00C026EE094F}") IBossEvolutionDefinition;
typedef TComInterface<IBossEvolutionDefinition, &IID_IBossEvolutionDefinition> IBossEvolutionDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0366-11D4-A30E-00C026EE094F}") ICutEvolutionDefinition;
typedef TComInterface<ICutEvolutionDefinition, &IID_ICutEvolutionDefinition> ICutEvolutionDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0367-11D4-A30E-00C026EE094F}") IFilletDefinition;
typedef TComInterface<IFilletDefinition, &IID_IFilletDefinition> IFilletDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0368-11D4-A30E-00C026EE094F}") IChamferDefinition;
typedef TComInterface<IChamferDefinition, &IID_IChamferDefinition> IChamferDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0369-11D4-A30E-00C026EE094F}") IShellDefinition;
typedef TComInterface<IShellDefinition, &IID_IShellDefinition> IShellDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0370-11D4-A30E-00C026EE094F}") ICopyMeshDefinition;
typedef TComInterface<ICopyMeshDefinition, &IID_ICopyMeshDefinition> ICopyMeshDefinitionPtr;

interface DECLSPEC_UUID("{BEC3920D-6238-401A-86A3-A600570F47A4}") IDeletedCopyCollection;
typedef TComInterface<IDeletedCopyCollection, &IID_IDeletedCopyCollection> IDeletedCopyCollectionPtr;

interface DECLSPEC_UUID("{7AA0E540-0371-11D4-A30E-00C026EE094F}") ICopyCircularDefinition;
typedef TComInterface<ICopyCircularDefinition, &IID_ICopyCircularDefinition> ICopyCircularDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0372-11D4-A30E-00C026EE094F}") ICopyCurveDefinition;
typedef TComInterface<ICopyCurveDefinition, &IID_ICopyCurveDefinition> ICopyCurveDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0373-11D4-A30E-00C026EE094F}") IMirrorDefinition;
typedef TComInterface<IMirrorDefinition, &IID_IMirrorDefinition> IMirrorDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0374-11D4-A30E-00C026EE094F}") IMirrorAllDefinition;
typedef TComInterface<IMirrorAllDefinition, &IID_IMirrorAllDefinition> IMirrorAllDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0375-11D4-A30E-00C026EE094F}") ICutByPlaneDefinition;
typedef TComInterface<ICutByPlaneDefinition, &IID_ICutByPlaneDefinition> ICutByPlaneDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0376-11D4-A30E-00C026EE094F}") ICutBySketchDefinition;
typedef TComInterface<ICutBySketchDefinition, &IID_ICutBySketchDefinition> ICutBySketchDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0377-11D4-A30E-00C026EE094F}") IMeshPartArrayDefinition;
typedef TComInterface<IMeshPartArrayDefinition, &IID_IMeshPartArrayDefinition> IMeshPartArrayDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0378-11D4-A30E-00C026EE094F}") ICircularPartArrayDefinition;
typedef TComInterface<ICircularPartArrayDefinition, &IID_ICircularPartArrayDefinition> ICircularPartArrayDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0379-11D4-A30E-00C026EE094F}") ICurvePartArrayDefinition;
typedef TComInterface<ICurvePartArrayDefinition, &IID_ICurvePartArrayDefinition> ICurvePartArrayDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0380-11D4-A30E-00C026EE094F}") IDerivativePartArrayDefinition;
typedef TComInterface<IDerivativePartArrayDefinition, &IID_IDerivativePartArrayDefinition> IDerivativePartArrayDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0381-11D4-A30E-00C026EE094F}") IInclineDefinition;
typedef TComInterface<IInclineDefinition, &IID_IInclineDefinition> IInclineDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0382-11D4-A30E-00C026EE094F}") IRibDefinition;
typedef TComInterface<IRibDefinition, &IID_IRibDefinition> IRibDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0384-11D4-A30E-00C026EE094F}") IImportedSurfaceDefinition;
typedef TComInterface<IImportedSurfaceDefinition, &IID_IImportedSurfaceDefinition> IImportedSurfaceDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0400-11D4-A30E-00C026EE094F}") IPolygonalLineDefinition;
typedef TComInterface<IPolygonalLineDefinition, &IID_IPolygonalLineDefinition> IPolygonalLineDefinitionPtr;

interface DECLSPEC_UUID("{D2D61E71-151A-4359-A0BE-DEA5A76F2492}") IPolygonalLineVertexParam;
typedef TComInterface<IPolygonalLineVertexParam, &IID_IPolygonalLineVertexParam> IPolygonalLineVertexParamPtr;

interface DECLSPEC_UUID("{7AA0E540-0401-11D4-A30E-00C026EE094F}") IConicSpiralDefinition;
typedef TComInterface<IConicSpiralDefinition, &IID_IConicSpiralDefinition> IConicSpiralDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0402-11D4-A30E-00C026EE094F}") ISplineDefinition;
typedef TComInterface<ISplineDefinition, &IID_ISplineDefinition> ISplineDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0403-11D4-A30E-00C026EE094F}") ICylindricSpiralDefinition;
typedef TComInterface<ICylindricSpiralDefinition, &IID_ICylindricSpiralDefinition> ICylindricSpiralDefinitionPtr;

interface DECLSPEC_UUID("{45702BE9-1505-40AB-BF0C-7FE86D5373E2}") IEvolutionSurfaceDefinition;
typedef TComInterface<IEvolutionSurfaceDefinition, &IID_IEvolutionSurfaceDefinition> IEvolutionSurfaceDefinitionPtr;

interface DECLSPEC_UUID("{6D87BCE9-5D07-41AD-A137-42957DAF0A6F}") IExtrusionSurfaceDefinition;
typedef TComInterface<IExtrusionSurfaceDefinition, &IID_IExtrusionSurfaceDefinition> IExtrusionSurfaceDefinitionPtr;

interface DECLSPEC_UUID("{FD27841D-1374-4F7F-AE8A-C2A44F89120D}") IRotatedSurfaceDefinition;
typedef TComInterface<IRotatedSurfaceDefinition, &IID_IRotatedSurfaceDefinition> IRotatedSurfaceDefinitionPtr;

interface DECLSPEC_UUID("{6E6A127B-233E-401F-8E29-BB298AE0FA45}") ILoftSurfaceDefinition;
typedef TComInterface<ILoftSurfaceDefinition, &IID_ILoftSurfaceDefinition> ILoftSurfaceDefinitionPtr;

interface DECLSPEC_UUID("{B6F6D0AB-6339-4FC6-842B-CC96596BCE82}") IMacro3DDefinition;
typedef TComInterface<IMacro3DDefinition, &IID_IMacro3DDefinition> IMacro3DDefinitionPtr;

interface DECLSPEC_UUID("{7AA0E540-0338-11D4-A30E-00C026EE094F}") IAxisConefaceDefinition;
typedef TComInterface<IAxisConefaceDefinition, &IID_IAxisConefaceDefinition> IAxisConefaceDefinitionPtr;

interface DECLSPEC_UUID("{7C641671-F791-47AC-B8AE-382428D8A01D}") IUnionComponentsDefinition;
typedef TComInterface<IUnionComponentsDefinition, &IID_IUnionComponentsDefinition> IUnionComponentsDefinitionPtr;

interface DECLSPEC_UUID("{1DD4FF64-72EF-408A-A9C6-0009B01FFC94}") IMoldCavityDefinition;
typedef TComInterface<IMoldCavityDefinition, &IID_IMoldCavityDefinition> IMoldCavityDefinitionPtr;

interface DECLSPEC_UUID("{CACF8C5A-9969-44A1-A36D-4CF516200920}") IPlaneMiddleDefinition;
typedef TComInterface<IPlaneMiddleDefinition, &IID_IPlaneMiddleDefinition> IPlaneMiddleDefinitionPtr;

interface DECLSPEC_UUID("{BF0F6CEC-F517-4094-B913-6B0A28E7CA83}") IControlPointDefinition;
typedef TComInterface<IControlPointDefinition, &IID_IControlPointDefinition> IControlPointDefinitionPtr;

interface DECLSPEC_UUID("{F53A02E1-C560-4DE3-9E19-0D634FBE49A5}") IConjunctivePointDefinition;
typedef TComInterface<IConjunctivePointDefinition, &IID_IConjunctivePointDefinition> IConjunctivePointDefinitionPtr;

interface DECLSPEC_UUID("{2CF40627-9D0A-4588-A399-45F0FF96165F}") IAggregateDefinition;
typedef TComInterface<IAggregateDefinition, &IID_IAggregateDefinition> IAggregateDefinitionPtr;

interface DECLSPEC_UUID("{8E54CAEA-D1FC-4FF4-A0E5-4F5A9F5CDC6B}") IDefaultObject;
typedef TComInterface<IDefaultObject, &IID_IDefaultObject> IDefaultObjectPtr;

interface DECLSPEC_UUID("{4C69F05F-981C-4183-8DC6-D2D375D29581}") IEmbodiment3D;
typedef TComInterface<IEmbodiment3D, &IID_IEmbodiment3D> IEmbodiment3DPtr;

interface DECLSPEC_UUID("{FE1515C7-7003-4EE2-9C65-0429039DD217}") ILineSeg3dParam;
typedef TComInterface<ILineSeg3dParam, &IID_ILineSeg3dParam> ILineSeg3dParamPtr;

interface DECLSPEC_UUID("{9B2FED02-5FAC-4473-9E64-9BDF8B331E10}") ICircle3dParam;
typedef TComInterface<ICircle3dParam, &IID_ICircle3dParam> ICircle3dParamPtr;

interface DECLSPEC_UUID("{1DD50F18-9C19-424C-B20E-77E1369976E3}") IEllipse3dParam;
typedef TComInterface<IEllipse3dParam, &IID_IEllipse3dParam> IEllipse3dParamPtr;

interface DECLSPEC_UUID("{9C412B77-BFDE-4D60-B8C7-BD849801975E}") IPlaneParam;
typedef TComInterface<IPlaneParam, &IID_IPlaneParam> IPlaneParamPtr;

interface DECLSPEC_UUID("{105943CF-5A3E-4AA6-4AA6-57B4179013FC}") IConeParam;
typedef TComInterface<IConeParam, &IID_IConeParam> IConeParamPtr;

interface DECLSPEC_UUID("{A2899CA0-C84E-4C16-BFB2-E8DA69FC117E}") ICylinderParam;
typedef TComInterface<ICylinderParam, &IID_ICylinderParam> ICylinderParamPtr;

interface DECLSPEC_UUID("{941163AA-0F8A-422A-BE1A-9F43C8001044}") ISphereParam;
typedef TComInterface<ISphereParam, &IID_ISphereParam> ISphereParamPtr;

interface DECLSPEC_UUID("{C9C614A7-E8B6-4454-AC8B-E42330C11E15}") ITorusParam;
typedef TComInterface<ITorusParam, &IID_ITorusParam> ITorusParamPtr;

interface DECLSPEC_UUID("{24A26824-E13C-453F-8874-A0DF62AB595A}") IArc3dParam;
typedef TComInterface<IArc3dParam, &IID_IArc3dParam> IArc3dParamPtr;

interface DECLSPEC_UUID("{4DEA35BC-F9E0-4A3E-B815-FB55896FC8EF}") ISTrackingPointsMeasurer;
typedef TComInterface<ISTrackingPointsMeasurer, &IID_ISTrackingPointsMeasurer> ISTrackingPointsMeasurerPtr;

interface DECLSPEC_UUID("{EE5B4795-6E76-49A2-BFAD-9D953D82771F}") IDocument3DNotify;
typedef TComInterface<IDocument3DNotify, &IID_IDocument3DNotify> IDocument3DNotifyPtr;

interface DECLSPEC_UUID("{7B4657BB-68D9-4CA8-BA81-52C1D5C96943}") IObject3DNotify;
typedef TComInterface<IObject3DNotify, &IID_IObject3DNotify> IObject3DNotifyPtr;

interface DECLSPEC_UUID("{0712DCCC-83E0-429E-AB8C-5B255DD3C4E4}") IProcess3DNotify;
typedef TComInterface<IProcess3DNotify, &IID_IProcess3DNotify> IProcess3DNotifyPtr;

interface DECLSPEC_UUID("{45B82B5C-D0B7-4AC5-965C-26B09612CBF6}") IProcess3DManipulatorsNotify;
typedef TComInterface<IProcess3DManipulatorsNotify, &IID_IProcess3DManipulatorsNotify> IProcess3DManipulatorsNotifyPtr;

// *********************************************************************//
// Interface: IDocument3D
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0302-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IDocument3D  : public IUnknown
{
public:
  // [-1] Активизировать измененные параметры документа.
  virtual long STDMETHODCALLTYPE UpdateDocumentParam(void) = 0;
  // [-1] Получить имя файла.
  virtual LPWSTR STDMETHODCALLTYPE GetFileName(void) = 0;
  // [-1] Установить имя файла.
  virtual long STDMETHODCALLTYPE SetFileName(LPWSTR name) = 0;
  // [-1] Получить комментарий.
  virtual LPWSTR STDMETHODCALLTYPE GetComment(void) = 0;
  // [-1] Установить коментарий.
  virtual long STDMETHODCALLTYPE SetComment(LPWSTR comment) = 0;
  // [-1] Получить автора.
  virtual LPWSTR STDMETHODCALLTYPE GetAuthor(void) = 0;
  // [-1] Установить автора.
  virtual long STDMETHODCALLTYPE SetAuthor(LPWSTR author) = 0;
  // [-1] Получить состояние документа.
  virtual long STDMETHODCALLTYPE IsActive(void) = 0;
  // [-1] Сделать документ текущим.
  virtual long STDMETHODCALLTYPE SetActive(void) = 0;
  // [-1] Получить режим редактирования документа.
  virtual long STDMETHODCALLTYPE GetInvisibleMode(void) = 0;
  // [-1] Получить указатель на интерфейс компонента в соответствии с заданным типом.
  virtual Kompas6api3d5com_tlb::IPart* STDMETHODCALLTYPE GetPart(long type) = 0;
  // [-1] Создать документ-модель(деталь или сборку).
  virtual long STDMETHODCALLTYPE Create(long invisible, long _typeDoc) = 0;
  // [-1] Открыть на редактирование документ-модель(деталь или сборку).
  virtual long STDMETHODCALLTYPE Open(LPWSTR fileName, long invisible) = 0;
  // [-1] Cохранить документ-модель(деталь или сборку) в файл с заданным ранее именем.
  virtual long STDMETHODCALLTYPE Save(void) = 0;
  // [-1] Cохранить документ-модель(деталь или сборку) с новым именем.
  virtual long STDMETHODCALLTYPE SaveAs(LPWSTR fileName) = 0;
  // [-1] Закрыть документ-модель(деталь или сборку).
  virtual long STDMETHODCALLTYPE Close(void) = 0;
  // [-1] Запустить процесс выбора объекта.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE UserSelectEntity(Kompas6api3d5com_tlb::IEntity* defSelectObject, 
                                                                            void* fnFilter, 
                                                                            LPWSTR prompt) = 0;
  // [-1] Получить курсор.
  virtual long STDMETHODCALLTYPE UserGetCursor(LPWSTR prompt, double* x, double* y, double* z) = 0;
  // [-1] Определить, запущен ли какой-либо из компонентов на редактирование через библиотеку.
  virtual long STDMETHODCALLTYPE IsEditMode(void) = 0;
  // [-1] Получить указатель интерфейса параметров запроса к системе.
  virtual Kompas6api3d5com_tlb::IRequestInfo* STDMETHODCALLTYPE GetRequestInfo(Kompas6api3d5com_tlb::IPart* part) = 0;
  // [-1] Запустить процесс указания местоположения или объектов.
  virtual long STDMETHODCALLTYPE UserGetPlacementAndEntity(long entityCount) = 0;
  // [-1] Получить указатель на интерфейс динамического массива объектов заданного типа, выбранных в документе.
  virtual Kompas6api3d5com_tlb::IEntityCollection* STDMETHODCALLTYPE EntityCollection(short objType, 
                                                                                      long checkEntity) = 0;
  // [-1] Вставить в модель компонент из файла или из библиотеки моделей.
  virtual long STDMETHODCALLTYPE SetPartFromFile(LPWSTR fileName, Kompas6api3d5com_tlb::IPart* part, 
                                                 long externalFile) = 0;
  // [-1] Создание детали в сборке из файла или из библиотеки моделей.
  virtual long STDMETHODCALLTYPE CreatePartFromFile(LPWSTR fileName, 
                                                    Kompas6api3d5com_tlb::IPart* part, 
                                                    Kompas6api3d5com_tlb::IEntity* plane) = 0;
  // [-1] Определить, является ли модель деталью.
  virtual long STDMETHODCALLTYPE IsDetail(void) = 0;
  // [-1] Функция позволяет передать изменения в цикл UserGetPlacementAndEntity.
  virtual long STDMETHODCALLTYPE ChangeObjectInLibRequest(void) = 0;
  // [-1] Прервать процесс UserGetPlacementAndEntity.
  virtual long STDMETHODCALLTYPE StopLibRequest(void) = 0;
  // [-1] Вернуть указатель на интерфейс параметров массива сопряжений компонента сборки.
  virtual Kompas6api3d5com_tlb::IMateConstraintCollection* STDMETHODCALLTYPE MateConstraintCollection(void) = 0;
  // [-1] Добавить сопряжение в сборку.
  virtual long STDMETHODCALLTYPE AddMateConstraint(long constraintType, 
                                                   Kompas6api3d5com_tlb::IEntity* obj1, 
                                                   Kompas6api3d5com_tlb::IEntity* obj2, 
                                                   short direction, short fixed, double val) = 0;
  // [-1] Удалить сопряжение из сборки.
  virtual long STDMETHODCALLTYPE RemoveMateConstraint(long constraintType, 
                                                      Kompas6api3d5com_tlb::IEntity* obj1, 
                                                      Kompas6api3d5com_tlb::IEntity* obj2) = 0;
  // [-1] Получить указатель на интерфейс для работы с объектами спецификации.
  virtual Kompas6api3d5com_tlb::ISpecification3D* STDMETHODCALLTYPE GetSpecification(void) = 0;
  // [-1] Получить указатель на интерфейс нового объекта-сопряжения.
  virtual Kompas6api3d5com_tlb::IMateConstraint* STDMETHODCALLTYPE GetMateConstraint(void) = 0;
  // [-1] Получить указатель на интерфейс динамического массива компонентов, вставленных в сборку.
  virtual Kompas6api3d5com_tlb::IPartCollection* STDMETHODCALLTYPE PartCollection(long Refresh) = 0;
  // [-1] Показать модель в активном окне полностью или установить предыдущий или последующий масштаб изображения.
  virtual long STDMETHODCALLTYPE ZoomPrevNextOrAll(short type) = 0;
  // [-1] Обновить активное окно.
  virtual long STDMETHODCALLTYPE RefreshActiveWindow(void) = 0;
  // [-1] Получить указатель на интерфейс детали, создаваемой в сборке.
  virtual Kompas6api3d5com_tlb::IPart* STDMETHODCALLTYPE CreatePartInAssembly(LPWSTR fileName, 
                                                                              Kompas6api3d5com_tlb::IEntity* plane) = 0;
  // [-1] Перестроить деталь или сборку.
  virtual long STDMETHODCALLTYPE RebuildDocument(void) = 0;
  // [-1] Сохранить документ в растровом файле.
  virtual long STDMETHODCALLTYPE SaveAsToRasterFormat(LPWSTR fileName, 
                                                      Kompas6api3d5com_tlb::IRasterFormatParam* par) = 0;
  // [-1] Сохранить модель в файле формата SAT, XT, STEP, IGES, VRML, STL, JT.
  virtual long STDMETHODCALLTYPE SaveAsToAdditionFormat(LPWSTR fileName, 
                                                        Kompas6api3d5com_tlb::IAdditionFormatParam* par) = 0;
  // [-1] Получить указатель на интерфейс параметров сохранения документа в растровом формате.
  virtual Kompas6api3d5com_tlb::IRasterFormatParam* STDMETHODCALLTYPE RasterFormatParam(void) = 0;
  // [-1] Получить указатель на интерфейс параметров сохранения модели в дополнительном формате.
  virtual Kompas6api3d5com_tlb::IAdditionFormatParam* STDMETHODCALLTYPE AdditionFormatParam(void) = 0;
  // [-1] Для активного окна 3d документа установитьвыключить перспективу.
  virtual long STDMETHODCALLTYPE SetPerspective(long val) = 0;
  // [-1] Для активного окна 3d документа получить перспективу.
  virtual long STDMETHODCALLTYPE GetPerspective(void) = 0;
  // [-1] Для активного окна 3d документа установить режим визуализации модели в окне.
  virtual long STDMETHODCALLTYPE SetDrawMode(int mode) = 0;
  // [-1] Для активного окна 3d документа получить режим визуализации модели в окне.
  virtual int STDMETHODCALLTYPE GetDrawMode(void) = 0;
  // [-1] Для активного окна 3d документа получить интерфейс проекции отображения модели в окне.
  virtual Kompas6api3d5com_tlb::IViewProjectionCollection* STDMETHODCALLTYPE GetViewProjectionCollection(void) = 0;
  // [-1] Удалить объект деталь, операцию, сопряжение.
  virtual long STDMETHODCALLTYPE DeleteObject(LPUNKNOWN obj) = 0;
  // [-1] Получить менеджер селектированных объектов.
  virtual Kompas6api3d5com_tlb::ISelectionMng* STDMETHODCALLTYPE GetSelectionMng(void) = 0;
  // [-1] Получить менеджер выбора (подсветки) объектов.
  virtual Kompas6api3d5com_tlb::IChooseMng* STDMETHODCALLTYPE GetChooseMng(void) = 0;
  // [-1] получить тип объекта.
  virtual int STDMETHODCALLTYPE GetObjectType(LPUNKNOWN obj) = 0;
  // [-1] Сохранить документ без сжатия в растровый формат.
  virtual long STDMETHODCALLTYPE SaveAsToUncompressedRasterFormat(LPWSTR fileName, 
                                                                  Kompas6api3d5com_tlb::IRasterFormatParam* par) = 0;
  // [-1] Добавить импортированные поверхности.
  virtual Kompas6api3d5com_tlb::IEntityCollection* STDMETHODCALLTYPE AddImportedSurfaces(LPWSTR fileName, 
                                                                                         long together) = 0;
  // [-1] Скрытьпоказать конструктивные плоскости.
  virtual long STDMETHODCALLTYPE SetHideAllPlanes(long val) = 0;
  // [-1] Скрытьпоказать конструктивные плоскости.
  virtual long STDMETHODCALLTYPE GetHideAllPlanes(void) = 0;
  // [-1] Скрытьпоказать конструктивные оси.
  virtual long STDMETHODCALLTYPE SetHideAllAxis(long val) = 0;
  // [-1] Скрытьпоказать конструктивные оси.
  virtual long STDMETHODCALLTYPE GetHideAllAxis(void) = 0;
  // [-1] Скрытьпоказать эскизы.
  virtual long STDMETHODCALLTYPE SetHideAllSketches(long val) = 0;
  // [-1] Скрытьпоказать эскизы.
  virtual long STDMETHODCALLTYPE GetHideAllSketches(void) = 0;
  // [-1] Скрытьпоказать начала координат.
  virtual long STDMETHODCALLTYPE SetHideAllPlaces(long val) = 0;
  // [-1] Скрытьпоказать начала координат.
  virtual long STDMETHODCALLTYPE GetHideAllPlaces(void) = 0;
  // [-1] Скрытьпоказать поверхности.
  virtual long STDMETHODCALLTYPE SetHideAllSurfaces(long val) = 0;
  // [-1] Скрытьпоказать поверхности.
  virtual long STDMETHODCALLTYPE GetHideAllSurfaces(void) = 0;
  // [-1] Скрытьпоказать резьбы.
  virtual long STDMETHODCALLTYPE SetHideAllThreads(long val) = 0;
  // [-1] Скрытьпоказать резьбы.
  virtual long STDMETHODCALLTYPE GetHideAllThreads(void) = 0;
  // [-1] Получить массив атрибутов.
  virtual Kompas6api3d5com_tlb::IAttribute3DCollection* STDMETHODCALLTYPE AttributeCollection(long key1, 
                                                                                              long key2, 
                                                                                              long key3, 
                                                                                              long key4, 
                                                                                              double numb, 
                                                                                              LPUNKNOWN pObj) = 0;
  // [-1] Получить массив объектов, имеющий данный атрибут (objType==o3d_unknown - выдавать все объекты).
  virtual Kompas6api3d5com_tlb::IFeatureCollection* STDMETHODCALLTYPE FeatureCollection(long key1, 
                                                                                        long key2, 
                                                                                        long key3, 
                                                                                        long key4, 
                                                                                        double numb, 
                                                                                        int objType) = 0;
  // [-1] Вставить в модель компонент из файла или из библиотеки моделей.
  virtual long STDMETHODCALLTYPE SetPartFromFileEx(LPWSTR fileName, 
                                                   Kompas6api3d5com_tlb::IPart* part, 
                                                   long externalFile, long redraw) = 0;
  // [-1] Интерфейс управления положением компонентов в сборке
  virtual Kompas6api3d5com_tlb::IComponentPositioner* STDMETHODCALLTYPE ComponentPositioner(void) = 0;
  // [-1] Интерфейс умолчательной CК
  virtual Kompas6api3d5com_tlb::IPlacement* STDMETHODCALLTYPE DefaultPlacement(void) = 0;
  // [-1] Для активного окна 3d документа установить полутоновое изображение с каркасом.
  virtual long STDMETHODCALLTYPE SetShadedWireframe(long val) = 0;
  // [-1] Для активного окна 3d документа получить признак полутонового изображения с каркасом.
  virtual long STDMETHODCALLTYPE GetShadedWireframe(void) = 0;
  // [-1] Получить редактируемый макрообъект 3D.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetEditMacroObject(void) = 0;
  // [-1] Cохранить документ-модель(деталь или сборку) с новым именем.
  virtual long STDMETHODCALLTYPE SaveAsEx(LPWSTR fileName, long saveMode) = 0;
  // [-1] Получить интерфейс 3D объекта.
  virtual LPUNKNOWN STDMETHODCALLTYPE GetInterface(long o3dType) = 0;
  // [-1] Режим разнесенного вида.
  virtual long STDMETHODCALLTYPE GetDismantleMode(void) = 0;
  // [-1] ВключитьВыключить режим разнесенного вида.
  virtual long STDMETHODCALLTYPE SetDismantleMode(long val) = 0;
  // [-1] Скрыть / показать пространственные кривые.
  virtual long STDMETHODCALLTYPE SetHideAllCurves(long val) = 0;
  // [-1] Скрыть / показать пространственные кривые.
  virtual long STDMETHODCALLTYPE GetHideAllCurves(void) = 0;
  // [-1] Скрыть / показать контрольные точки.
  virtual long STDMETHODCALLTYPE SetHideAllControlPoints(long val) = 0;
  // [-1] Скрыть / показать контрольные точки.
  virtual long STDMETHODCALLTYPE GetHideAllControlPoints(void) = 0;
  // [-1] Создать копию заданного компонента с заданным положением.
  virtual Kompas6api3d5com_tlb::IPart* STDMETHODCALLTYPE CopyPart(Kompas6api3d5com_tlb::IPart* sourcePart, 
                                                                  Kompas6api3d5com_tlb::IPlacement* newPlacement) = 0;
  // [-1] Получить свойство необходимости перестроения дерева при изменении его состава.
  virtual long STDMETHODCALLTYPE GetTreeNeedRebuild(void) = 0;
  // [-1] Установить свойство необходимости перестроения дерева при изменении его состава.
  virtual long STDMETHODCALLTYPE SetTreeNeedRebuild(long val) = 0;
  // [-1] Запустить процесс выбора объекта.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE UserSelectEntityEx(Kompas6api3d5com_tlb::IEntity* defSelectObject, 
                                                                              void* fnFilter, 
                                                                              LPWSTR prompt, 
                                                                              LPUNKNOWN processParam) = 0;
  // [-1] Поставить объект дерева после другого объекта дерева.
  virtual long STDMETHODCALLTYPE PlaceFeatureAfter(Kompas6api3d5com_tlb::IFeature* obj, 
                                                   Kompas6api3d5com_tlb::IFeature* afterObj) = 0;
  // [-1] Установить положение указателя в дереве.
  virtual long STDMETHODCALLTYPE SetRollBackFeature(Kompas6api3d5com_tlb::IFeature* obj) = 0;
  // [-1] Получить положение указателя в дереве.
  virtual Kompas6api3d5com_tlb::IFeature* STDMETHODCALLTYPE GetRollBackFeature(void) = 0;
  // [-1] Выдавать в коллекциях объекты выключенные указателем в дереве.
  virtual long STDMETHODCALLTYPE SetEnableRollBackFeaturesInCollections(long val) = 0;
  // [-1] Выдавать в коллекциях объекты выключенные указателем в дереве.
  virtual long STDMETHODCALLTYPE GetEnableRollBackFeaturesInCollections(void) = 0;
  // [-1] Исключитьвключить объекты после заданного.
  virtual long STDMETHODCALLTYPE ExcludeFeaturesAfter(Kompas6api3d5com_tlb::IFeature* obj, 
                                                      long exclude) = 0;
  // [-1] Скрыть / показать размеры.
  virtual long STDMETHODCALLTYPE GetHideAllDimensions(void) = 0;
  // [-1] Скрыть / показать размеры.
  virtual long STDMETHODCALLTYPE SetHideAllDimensions(long val) = 0;
  // [-1] Скрыть / показать условные обозначения.
  virtual long STDMETHODCALLTYPE GetHideAllDesignations(void) = 0;
  // [-1] Скрыть / показать условные обозначения.
  virtual long STDMETHODCALLTYPE SetHideAllDesignations(long val) = 0;
  // [-1] Скрыть / показать все вспомогательные объекты.
  virtual long STDMETHODCALLTYPE GetHideAllAuxiliaryGeom(void) = 0;
  // [-1] Скрыть / показать все вспомогательные объекты.
  virtual long STDMETHODCALLTYPE SetHideAllAuxiliaryGeom(long val) = 0;
  // [-1] Режим скрытия вспомогательной геометрии в компонентах.
  virtual long STDMETHODCALLTYPE GetHideInComponentsMode(void) = 0;
  // [-1] Режим скрытия вспомогательной геометрии в компонентах.
  virtual long STDMETHODCALLTYPE SetHideInComponentsMode(long val) = 0;
  // [-1] Дополнительные параметры для событий документа 3D.
  virtual Kompas6api3d5com_tlb::IDocument3DNotifyResult* STDMETHODCALLTYPE GetDocument3DNotifyResult(void) = 0;
  // [-1] Получить указатель на документ.
  virtual long STDMETHODCALLTYPE GetReference(void) = 0;
  // [-1] Получить свойство необходимости перерисовки окна документа.
  virtual long STDMETHODCALLTYPE GetWindowNeedRebuild(void) = 0;
  // [-1] Установить свойство необходимости перерисовки окна документа.
  virtual long STDMETHODCALLTYPE SetWindowNeedRebuild(long val) = 0;
  // [-1] Скрыть / показать компановочную геометрию.
  virtual long STDMETHODCALLTYPE GetHideLayoutGeometry(void) = 0;
  // [-1] Скрыть / показать компановочную геометрию.
  virtual long STDMETHODCALLTYPE SetHideLayoutGeometry(long val) = 0;
  // [-1] Запустить подчиненный режим создания объектов.
  virtual long STDMETHODCALLTYPE RunTakeCreateObjectProc(long processType, LPUNKNOWN takeObject, 
                                                         long needCreateTakeObj, long lostTakeObj) = 0;
  // [-1] Загрузить модель из файла формата SAT, XT, STEP, IGES, STL, JT.
  virtual long STDMETHODCALLTYPE LoadFromAdditionFormat(LPWSTR fileName, 
                                                        Kompas6api3d5com_tlb::IAdditionFormatParam* par) = 0;
  // [-1] Получить последний объект в дереве.
  virtual Kompas6api3d5com_tlb::IFeature* STDMETHODCALLTYPE GetLastFeature(void) = 0;
};

// *********************************************************************//
// Interface: IPart
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0300-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IPart  : public IUnknown
{
public:
  // [-1] Получить имя компонента.
  virtual LPWSTR STDMETHODCALLTYPE GetName(void) = 0;
  // [-1] Установить имя компонента.
  virtual long STDMETHODCALLTYPE SetName(LPWSTR name) = 0;
  // [-1] Получить обозначение.
  virtual LPWSTR STDMETHODCALLTYPE GetMarking(void) = 0;
  // [-1] Установить обозначение.
  virtual long STDMETHODCALLTYPE SetMarking(LPWSTR marking) = 0;
  // [-1] Получить интерфейс папаметров цвета.
  virtual Kompas6api3d5com_tlb::IColorParam* STDMETHODCALLTYPE ColorParam(void) = 0;
  // [-1] Получить свойства цвета.
  virtual long STDMETHODCALLTYPE GetAdvancedColor(unsigned_long* color, double* ambient, 
                                                  double* diffuse, double* specularity, 
                                                  double* shininess, double* transparency, 
                                                  double* emission) = 0;
  // [-1] Установить свойства цвета.
  virtual long STDMETHODCALLTYPE SetAdvancedColor(unsigned_long color, double ambient, 
                                                  double diffuse, double specularity, 
                                                  double shininess, double transparency, 
                                                  double emission) = 0;
  // [-1] Установить свойства объекта.
  virtual long STDMETHODCALLTYPE _Update(void) = 0;
  // [-1] Сохранить в детали пользовательские параметры редактирования.
  virtual long STDMETHODCALLTYPE SetUserParam(void* value, long size, LPWSTR fileName, 
                                              LPWSTR libName, long command) = 0;
  // [-1] Получить размер памати пользовательских параметров детали.
  virtual long STDMETHODCALLTYPE GetUserParamSize(void) = 0;
  // [-1] Выдать дополнительные параметры редактирования для детали.
  virtual long STDMETHODCALLTYPE GetUserParam(void* value, long size) = 0;
  // [-1] Получить предопределенные элементы(плоскости ось и СК).
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetDefaultEntity(short objType) = 0;
  // [-1] Получить массив объектов детали.
  virtual Kompas6api3d5com_tlb::IEntityCollection* STDMETHODCALLTYPE EntityCollection(short objType) = 0;
  // [-1] Получить заготовку для одного из создаваемых элементов.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE NewEntity(short objType) = 0;
  // [-1] Получить локальную систему координат компонента.
  virtual Kompas6api3d5com_tlb::IPlacement* STDMETHODCALLTYPE GetPlacement(void) = 0;
  // [-1] Установить локальную система координат компонента.
  virtual long STDMETHODCALLTYPE SetPlacement(Kompas6api3d5com_tlb::IPlacement* p) = 0;
  // [-1] Установить локальную систему координат детали.
  virtual long STDMETHODCALLTYPE UpdatePlacement(void) = 0;
  // [-1] Получить массив внешних переменных.
  virtual Kompas6api3d5com_tlb::IVariableCollection* STDMETHODCALLTYPE VariableCollection(void) = 0;
  // [-1] Перестроить модель.
  virtual long STDMETHODCALLTYPE RebuildModel(void) = 0;
  // [-1] Получить признак является ли компонент стандартным.
  virtual long STDMETHODCALLTYPE GetStandardComponent(void) = 0;
  // [-1] Установить признак является ли компонент стандартным.
  virtual long STDMETHODCALLTYPE SetStandardComponent(long f) = 0;
  // [-1] Сохранить в детали зависивые объекты для повторного редактирования детали.
  virtual long STDMETHODCALLTYPE SetMateConstraintObjects(Kompas6api3d5com_tlb::IEntityCollection* collection) = 0;
  // [-1] Получить массив зависивых объектов для повторного редактирования детали.
  virtual Kompas6api3d5com_tlb::IEntityCollection* STDMETHODCALLTYPE GetMateConstraintObjects(void) = 0;
  // [-1] Получить признак, что компонент фиксированный.
  virtual long STDMETHODCALLTYPE GetFixedComponent(void) = 0;
  // [-1] Установить признак, что компонент фиксированный.
  virtual long STDMETHODCALLTYPE SetFixedComponent(long f) = 0;
  // [-1] Получить имя файла компонента.
  virtual LPWSTR STDMETHODCALLTYPE GetFileName(void) = 0;
  // [-1] Установить имя файла компонента.
  virtual long STDMETHODCALLTYPE SetFileName(LPWSTR name) = 0;
  // [-1] true - компонент является деталью, false - сборкой/подсборкой.
  virtual long STDMETHODCALLTYPE IsDetail(void) = 0;
  // [-1] Войти в режим редактирования компонента сборки.
  virtual Kompas6api3d5com_tlb::IDocument3D* STDMETHODCALLTYPE BeginEdit(void) = 0;
  // [-1] Завершить процесс редактирования компонента сборки.
  virtual long STDMETHODCALLTYPE EndEdit(long rebuild_) = 0;
  // [-1] Получить указатель на подчиненную деталь или сборку.
  virtual Kompas6api3d5com_tlb::IPart* STDMETHODCALLTYPE GetPart(long type) = 0;
  // [-1] Получить массу детали.
  virtual double STDMETHODCALLTYPE GetMass(void) = 0;
  // [-1] Вставить деталь-заготовку.
  virtual long STDMETHODCALLTYPE PutStorage(LPWSTR str, long type, long mirror) = 0;
  // [-1] Включить/исключить из расчета.
  virtual long STDMETHODCALLTYPE SetExcluded(long exclude) = 0;
  // [-1] Получить свойство - Включить/исключить.
  virtual long STDMETHODCALLTYPE GetExcluded(void) = 0;
  // [-1] Получить материал.
  virtual LPWSTR STDMETHODCALLTYPE GetMaterial(void) = 0;
  // [-1] Получить плотность.
  virtual double STDMETHODCALLTYPE GetDensity(void) = 0;
  // [-1] Установить материал.
  virtual long STDMETHODCALLTYPE SetMaterial(LPWSTR name, double density) = 0;
  // [-1] Получить имя файла пользовательской библиотеки.
  virtual LPWSTR STDMETHODCALLTYPE GetUserLibraryFileName(void) = 0;
  // [-1] Получить имя пользовательской библиотеки.
  virtual LPWSTR STDMETHODCALLTYPE GetUserLibraryName(void) = 0;
  // [-1] Получить номер команды пользовательской библиотеки.
  virtual long STDMETHODCALLTYPE GetUserLibraryCommand(void) = 0;
  // [-1] Получить массив тел.
  virtual Kompas6api3d5com_tlb::IBodyCollection* STDMETHODCALLTYPE BodyCollection(void) = 0;
  // [-1] Получить объект дерева, связанный с данным объектом.
  virtual Kompas6api3d5com_tlb::IFeature* STDMETHODCALLTYPE GetFeature(void) = 0;
  // [-1] Определить массо-центровочные характеристики (bitVector - определяет размерность длины, размерность массы, флаги находятся в интервале [ST_MIX_MM..ST_MIX_KG] ) Пример: метры|кг| ST_MIX_M|ST_MIX_KG.
  virtual Kompas6api3d5com_tlb::IMassInertiaParam* STDMETHODCALLTYPE CalcMassInertiaProperties(unsigned bitVector) = 0;
  // [-1] Получть интерфейс измерений.
  virtual Kompas6api3d5com_tlb::IMeasurer* STDMETHODCALLTYPE GetMeasurer(void) = 0;
  // [-1] Получить результирующее тело.
  virtual Kompas6api3d5com_tlb::IBody* STDMETHODCALLTYPE GetMainBody(void) = 0;
  // [-1] Получить используемый цвет (цвет источника, цвет хозяина, цвет слоя, цвет слоя, собственный цвет).
  virtual long STDMETHODCALLTYPE GetUseColor(void) = 0;
  // [-1] Установить используемый цвет (цвет источника, цвет хозяина, цвет слоя, цвет слоя, собственный цвет).
  virtual long STDMETHODCALLTYPE SetUseColor(long useColor) = 0;
  // [-1] Интерфейс результатов редактирования объекта.
  virtual Kompas6api3d5com_tlb::IObject3DNotifyResult* STDMETHODCALLTYPE GetObject3DNotifyResult(void) = 0;
  // [-1] Установить локальную систему координат детали.
  virtual long STDMETHODCALLTYPE UpdatePlacementEx(long redraw) = 0;
  // [-1] Перестроить модель.
  virtual long STDMETHODCALLTYPE RebuildModelEx(long redraw) = 0;
  // [-1] Получить свойство необходимости перестроения объектов при изменении их свойств.
  virtual long STDMETHODCALLTYPE GetNeedRebuild(void) = 0;
  // [-1] Установить свойство необходимости перестроения объектов при изменении их свойств.
  virtual long STDMETHODCALLTYPE SetNeedRebuild(long val) = 0;
  // [-1] Расчет пересечений c кривой.
  virtual long STDMETHODCALLTYPE CurveIntersection(Kompas6api3d5com_tlb::ICurve3D* curve, 
                                                   Kompas6api3d5com_tlb::IPartCollection* parts, 
                                                   Kompas6api3d5com_tlb::IFaceCollection* faces, 
                                                   Kompas6api3d5com_tlb::ICoordinate3dCollection* points) = 0;
  // [-1] Перевода координат точек присланной детали part1 в систему координат детали.
  virtual long STDMETHODCALLTYPE TransformPoint(double* x/*[in,out]*/, double* y/*[in,out]*/, 
                                                double* z/*[in,out]*/, 
                                                Kompas6api3d5com_tlb::IPart* part1/*[in]*/) = 0;
  // [-1] Получить состояние видимости объекта.
  virtual long STDMETHODCALLTYPE GetHidden(void) = 0;
  // [-1] Установить состояние видимости объекта.
  virtual long STDMETHODCALLTYPE SetHidden(long _hidden) = 0;
  // [-1] Установить объект по индексу.
  virtual long STDMETHODCALLTYPE SetObject(long index, LPUNKNOWN obj) = 0;
  // [-1] Получить объект по индексу.
  virtual LPUNKNOWN STDMETHODCALLTYPE GetObject(long index) = 0;
  // [-1] Кол-во объектов сохраннёных в детали.
  virtual long STDMETHODCALLTYPE GetCountObj(void) = 0;
  // [-1] Удалить все объекты сохранённые в детали.
  virtual long STDMETHODCALLTYPE ClearAllObj(void) = 0;
  // [-1] Запуск процесса создания или редактирования объекта.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE CreateOrEditObject(short objType, 
                                                                              Kompas6api3d5com_tlb::IEntity* editObj) = 0;
  // [-1] Получить признак внешнего редактирования детали.
  virtual long STDMETHODCALLTYPE GetDoubleClickEditOff(void) = 0;
  // [-1] Установить признак внешнего редактирования детали.
  virtual long STDMETHODCALLTYPE SetDoubleClickEditOff(long val) = 0;
  // [-1] Перевода координат точек присланной детали part1 в систему координат детали.
  virtual long STDMETHODCALLTYPE TransformPoints(VARIANT* poins/*[in,out]*/, 
                                                 Kompas6api3d5com_tlb::IPart* part1) = 0;
  // [-1] Получить суммарную матрицу преобразование координат.
  virtual long STDMETHODCALLTYPE GetSummMatrix(VARIANT* matrix, Kompas6api3d5com_tlb::IPart* part1) = 0;
  // [-1] Получить признак многочастей.
  virtual long STDMETHODCALLTYPE GetMultiBodyParts(void) = 0;
  // [-1] Установить значения переменных из источника.
  virtual long STDMETHODCALLTYPE SetSourceVariables(long rebuild_) = 0;
  // [-1] Получть интерфейс для 3D измерений.
  virtual LPUNKNOWN STDMETHODCALLTYPE GetMathematic3D(int type) = 0;
  // [-1] Выдать габарит.
  virtual long STDMETHODCALLTYPE GetGabarit(long full, long customizable, double* x1, double* y1, 
                                            double* z1, double* x2, double* y2, double* z2) = 0;
  // [-1] Получить интерфейс объекта по имени.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetObjectByName(LPWSTR name, 
                                                                           short objType, 
                                                                           long testFullName, 
                                                                           long testIgnoreCase) = 0;
  // [-1] Поддерживается интерфейс внешних свойств объекта.
  virtual long STDMETHODCALLTYPE GetPropertyObjectEditable(void) = 0;
  // [-1] Поддерживается интерфейс внешних свойств объекта.
  virtual long STDMETHODCALLTYPE SetPropertyObjectEditable(long PVal) = 0;
};

// *********************************************************************//
// Interface: IColorParam
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0305-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IColorParam  : public IUnknown
{
public:
  // [-1] Установить цвет как у детали.
  virtual long STDMETHODCALLTYPE Clear(void) = 0;
  // [-1] Получить цвет.
  virtual unsigned_long STDMETHODCALLTYPE GetColor(void) = 0;
  // [-1] Установить цвет.
  virtual long STDMETHODCALLTYPE SetColor(unsigned_long val) = 0;
  // [-1] Получить общий свет (от 0 до 100%).
  virtual double STDMETHODCALLTYPE GetAmbient(void) = 0;
  // [-1] Установить общий свет (от 0 до 100%).
  virtual long STDMETHODCALLTYPE SetAmbient(double val) = 0;
  // [-1] Получить диффузию (от 0 до 100%).
  virtual double STDMETHODCALLTYPE GetDiffuse(void) = 0;
  // [-1] Установить диффузию (от 0 до 100%).
  virtual long STDMETHODCALLTYPE SetDiffuse(double val) = 0;
  // [-1] Получить зеркальность (от 0 до 100%).
  virtual double STDMETHODCALLTYPE GetSpecularity(void) = 0;
  // [-1] Установить зеркальность (от 0 до 100%).
  virtual long STDMETHODCALLTYPE SetSpecularity(double val) = 0;
  // [-1] Получить блеск (от 0 до 100%).
  virtual double STDMETHODCALLTYPE GetShininess(void) = 0;
  // [-1] Установить блеск (от 0 до 100%).
  virtual long STDMETHODCALLTYPE SetShininess(double val) = 0;
  // [-1] Получить прозрачность (от 0 до 100%).
  virtual double STDMETHODCALLTYPE GetTransparency(void) = 0;
  // [-1] Установить прозрачность (от 0 до 100%).
  virtual long STDMETHODCALLTYPE SetTransparency(double val) = 0;
  // [-1] Получить излучение (от 0 до 100%).
  virtual double STDMETHODCALLTYPE GetEmission(void) = 0;
  // [-1] Установить излучение (от 0 до 100%).
  virtual long STDMETHODCALLTYPE SetEmission(double val) = 0;
  // [-1] Получить используемый цвет (цвет источника, цвет хозяина, цвет слоя, цвет слоя, собственный цвет).
  virtual long STDMETHODCALLTYPE GetUseColor(void) = 0;
  // [-1] Установить используемый цвет (цвет источника, цвет хозяина, цвет слоя, цвет слоя, собственный цвет).
  virtual long STDMETHODCALLTYPE SetUseColor(long useColor) = 0;
};

// *********************************************************************//
// Interface: IEntity
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0301-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IEntity  : public IUnknown
{
public:
  // [-1] Получить состояние видимости объекта.
  virtual long STDMETHODCALLTYPE GetHidden(void) = 0;
  // [-1] Установить состояние видимости объекта.
  virtual long STDMETHODCALLTYPE SetHidden(long _hidden) = 0;
  // [-1] Получить имя элемента трехмерной модели(оси, плоскости, формообразующего элемента).
  virtual LPWSTR STDMETHODCALLTYPE GetName(void) = 0;
  // [-1] Установить имя элемента трехмерной модели(оси, плоскости, формообразующего элемента).
  virtual long STDMETHODCALLTYPE SetName(LPWSTR name) = 0;
  // [-1] Получить указатель на интерфейс параметров цвета и визуальных свойств объекта.
  virtual Kompas6api3d5com_tlb::IColorParam* STDMETHODCALLTYPE ColorParam(void) = 0;
  // [-1] Получить параметры цвета и визуальных свойств объекта.
  virtual long STDMETHODCALLTYPE GetAdvancedColor(unsigned_long* color, double* ambient, 
                                                  double* diffuse, double* specularity, 
                                                  double* shininess, double* transparency, 
                                                  double* emission) = 0;
  // [-1] Установить параметры цвета и визуальных свойств объекта.
  virtual long STDMETHODCALLTYPE SetAdvancedColor(unsigned_long color, double ambient, 
                                                  double diffuse, double specularity, 
                                                  double shininess, double transparency, 
                                                  double emission) = 0;
  // [-1] Проверить объект на соответствие указанному типу.
  virtual long STDMETHODCALLTYPE IsIt(short objType) = 0;
  // [-1] Получить тип элемента трехмерной модели.
  virtual short STDMETHODCALLTYPE GetType(void) = 0;
  // [-1] Получить признак существования объекта.
  virtual long STDMETHODCALLTYPE IsCreated(void) = 0;
  // [-1] Получить указатель на интерфейс параметров объектов и элементов.
  virtual LPUNKNOWN STDMETHODCALLTYPE GetDefinition(void) = 0;
  // [-1] Создать объект в модели.
  virtual long STDMETHODCALLTYPE Create(void) = 0;
  // [-1] Установить свойства объекта(используя ранее установленные свойства).
  virtual long STDMETHODCALLTYPE _Update(void) = 0;
  // [-1] Получить указатель на интерфейс компонента, владеющего элементом(например, интерфейс детали, владеющей указанной гранью).
  virtual Kompas6api3d5com_tlb::IPart* STDMETHODCALLTYPE GetParent(void) = 0;
  // [-1] Включить/исключить из расчета.
  virtual long STDMETHODCALLTYPE SetExcluded(long exclude) = 0;
  // [-1] Получить свойство включить/исключить из расчета.
  virtual long STDMETHODCALLTYPE GetExcluded(void) = 0;
  // [-1] Получить объект дерева, связанный с данным объектом.
  virtual Kompas6api3d5com_tlb::IFeature* STDMETHODCALLTYPE GetFeature(void) = 0;
  // [-1] Получить массив трехмерных тел.
  virtual Kompas6api3d5com_tlb::IBodyCollection* STDMETHODCALLTYPE BodyCollection(void) = 0;
  // [-1] Получить признак многочастей.
  virtual long STDMETHODCALLTYPE GetMultiBodyParts(void) = 0;
  // [-1] Получить интерфейс частей тела.
  virtual Kompas6api3d5com_tlb::IBodyParts* STDMETHODCALLTYPE GetBodyParts(void) = 0;
  // [-1] Получить используемый цвет (цвет источника, цвет хозяина, цвет слоя, цвет слоя, собственный цвет).
  virtual long STDMETHODCALLTYPE GetUseColor(void) = 0;
  // [-1] Установить используемый цвет (цвет источника, цвет хозяина, цвет слоя, цвет слоя, собственный цвет).
  virtual long STDMETHODCALLTYPE SetUseColor(long useColor) = 0;
};

// *********************************************************************//
// Interface: IFeature
// Flags:     (16) Hidden
// GUID:      {1D15245B-695E-4F9F-AFCA-EACBC3A055BB}
// *********************************************************************//
interface IFeature  : public IUnknown
{
public:
  // [-1] Получить имя объекта.
  virtual LPWSTR STDMETHODCALLTYPE GetName(void) = 0;
  // [-1] Получить значение, определяющее время изменения геометрии.
  virtual unsigned_long STDMETHODCALLTYPE GetUpdateStamp(void) = 0;
  // [-1] Модифицирована ли модель с момента последнего перестроения (TRUE означает определять по вложенным объектам).
  virtual long STDMETHODCALLTYPE IsModified(long recursive) = 0;
  // [-1] Получить массив объектов, которыми данный объет владеет (through==TRUE - выдавать все объекты, даже скрытые, libObject==TRUE - выдавать внутрености для библиотечного элемента).
  virtual Kompas6api3d5com_tlb::IFeatureCollection* STDMETHODCALLTYPE SubFeatureCollection(long through, 
                                                                                           long libObject) = 0;
  // [-1] Получить интерфейс объекта-владельца.
  virtual Kompas6api3d5com_tlb::IFeature* STDMETHODCALLTYPE GetOwnerFeature(void) = 0;
  // [-1] Получить индикатор доступности объекта.
  virtual long STDMETHODCALLTYPE IsValid(void) = 0;
  // [-1] Получить тип объекта модели из enum Obj3dType: o3d_part(деталь), o3d_entity(объект), o3d_mateConstraint(сопряжение).
  virtual short STDMETHODCALLTYPE GetType(void) = 0;
  // [-1] Получить объект модели, связанный с объектом дерева.
  virtual LPUNKNOWN STDMETHODCALLTYPE GetObject(void) = 0;
  // [-1] Включить/исключить из расчета.
  virtual long STDMETHODCALLTYPE SetExcluded(long exclude) = 0;
  // [-1] Получить свойство - Включить/исключить.
  virtual long STDMETHODCALLTYPE GetExcluded(void) = 0;
  // [-1] Получить массив атрибутов.
  virtual Kompas6api3d5com_tlb::IAttribute3DCollection* STDMETHODCALLTYPE AttributeCollection(long key1, 
                                                                                              long key2, 
                                                                                              long key3, 
                                                                                              long key4, 
                                                                                              double numb) = 0;
  // [-1] Получить массив объектов( грани. ребра. вершины) .
  virtual Kompas6api3d5com_tlb::IEntityCollection* STDMETHODCALLTYPE EntityCollection(short objType) = 0;
  // [-1] Получить массив переменных.
  virtual Kompas6api3d5com_tlb::IVariableCollection* STDMETHODCALLTYPE VariableCollection(void) = 0;
  // [-1] Получить массив трехмерных тел.
  virtual Kompas6api3d5com_tlb::IBodyCollection* STDMETHODCALLTYPE BodyCollection(void) = 0;
  // [-1] Получить массив атрибутов из источника.
  virtual Kompas6api3d5com_tlb::IAttribute3DCollection* STDMETHODCALLTYPE AttributeCollectionEx(long key1, 
                                                                                                long key2, 
                                                                                                long key3, 
                                                                                                long key4, 
                                                                                                double numb, 
                                                                                                Kompas6api3d5com_tlb::IPart* sourcePart) = 0;
  // [-1] Лежит ли объект ниже конца построения модели.
  virtual long STDMETHODCALLTYPE IsRollBacked(void) = 0;
  // [-1] Получить массив переменных.
  virtual Kompas6api3d5com_tlb::IVariableCollection* STDMETHODCALLTYPE VariableCollectionEx(long sourse) = 0;
  // [-1] Получить номер ошибки.
  virtual long STDMETHODCALLTYPE GetObjectError(void) = 0;
};

// *********************************************************************//
// Interface: IFeatureCollection
// Flags:     (16) Hidden
// GUID:      {CE5D4888-9006-43AC-9ACC-6D9E58B408B4}
// *********************************************************************//
interface IFeatureCollection  : public IUnknown
{
public:
  // [-1] Обновить массив.
  virtual long STDMETHODCALLTYPE Refresh(void) = 0;
  // [-1] Получить количество элемент массива.
  virtual long STDMETHODCALLTYPE GetCount(void) = 0;
  // [-1] Получить первый элемент.
  virtual Kompas6api3d5com_tlb::IFeature* STDMETHODCALLTYPE First(void) = 0;
  // [-1] Получить последний элемент.
  virtual Kompas6api3d5com_tlb::IFeature* STDMETHODCALLTYPE Last(void) = 0;
  // [-1] Получить следующий элемент.
  virtual Kompas6api3d5com_tlb::IFeature* STDMETHODCALLTYPE Next(void) = 0;
  // [-1] Получить предыдущий элемент.
  virtual Kompas6api3d5com_tlb::IFeature* STDMETHODCALLTYPE Prev(void) = 0;
  // [-1] Получить элемент по индексу.
  virtual Kompas6api3d5com_tlb::IFeature* STDMETHODCALLTYPE GetByIndex(long index) = 0;
  // [-1] Получить указатель на интерфейс компонента по имени.
  virtual Kompas6api3d5com_tlb::IFeature* STDMETHODCALLTYPE GetByName(LPWSTR name, long testFullName, 
                                                                      long testIgnoreCase) = 0;
  // [-1] Получить индекс элемента массива.
  virtual unsigned_long STDMETHODCALLTYPE FindIt(Kompas6api3d5com_tlb::IFeature* mate) = 0;
  // [-1] Добавить объект в массив.
  virtual long STDMETHODCALLTYPE Add(Kompas6api3d5com_tlb::IFeature* obj) = 0;
  // [-1] Добавить объект в массив с заданным индексом.
  virtual long STDMETHODCALLTYPE AddAt(Kompas6api3d5com_tlb::IFeature* obj, long index) = 0;
  // [-1] Добавить объект перед указанным объектом в массиве.
  virtual long STDMETHODCALLTYPE AddBefore(Kompas6api3d5com_tlb::IFeature* obj, 
                                           Kompas6api3d5com_tlb::IFeature* base) = 0;
  // [-1] Удалить объект из массива по индексу.
  virtual long STDMETHODCALLTYPE DetachByIndex(long index) = 0;
  // [-1] Удалить указанный объект из массива.
  virtual long STDMETHODCALLTYPE DetachByBody(Kompas6api3d5com_tlb::IFeature* obj) = 0;
  // [-1] Очистить динамический массив объектов.
  virtual long STDMETHODCALLTYPE Clear(void) = 0;
  // [-1] Установить объект с указанным индексом в массиве на присланный объект.
  virtual long STDMETHODCALLTYPE SetByIndex(Kompas6api3d5com_tlb::IFeature* obj, long index) = 0;
  // [-1] Получить массив атрибутов.
  virtual Kompas6api3d5com_tlb::IAttribute3DCollection* STDMETHODCALLTYPE AttributeCollection(long key1, 
                                                                                              long key2, 
                                                                                              long key3, 
                                                                                              long key4, 
                                                                                              double numb) = 0;
};

// *********************************************************************//
// Interface: IAttribute3DCollection
// Flags:     (16) Hidden
// GUID:      {E17C2BE7-9C11-4FB3-ADBD-04EC912784E8}
// *********************************************************************//
interface IAttribute3DCollection  : public IUnknown
{
public:
  // [-1] Обновить массив компонентов сборки.
  virtual long STDMETHODCALLTYPE Refresh(void) = 0;
  // [-1] Получить количество элементов массива компонентов сборки.
  virtual long STDMETHODCALLTYPE GetCount(void) = 0;
  // [-1] Получить указатель на интерфейс первого компонента.
  virtual Kompas6api3d5com_tlb::IAttribute3D* STDMETHODCALLTYPE First(void) = 0;
  // [-1] Получить указатель на интерфейс последнего компонента.
  virtual Kompas6api3d5com_tlb::IAttribute3D* STDMETHODCALLTYPE Last(void) = 0;
  // [-1] Получить указатель на интерфейс следующего компонента.
  virtual Kompas6api3d5com_tlb::IAttribute3D* STDMETHODCALLTYPE Next(void) = 0;
  // [-1] Получить указатель на интерфейс предыдущего компонента.
  virtual Kompas6api3d5com_tlb::IAttribute3D* STDMETHODCALLTYPE Prev(void) = 0;
  // [-1] Получить указатель на интерфейс компонента по индексу.
  virtual Kompas6api3d5com_tlb::IAttribute3D* STDMETHODCALLTYPE GetByIndex(long index) = 0;
  // [-1] Получить индекс элемента массива.
  virtual unsigned_long STDMETHODCALLTYPE FindIt(Kompas6api3d5com_tlb::IAttribute3D* obj) = 0;
  // [-1] Селектировать атрибуты, данного типа или с данными ключами.
  virtual long STDMETHODCALLTYPE Select(long key1, long key2, long key3, long key4, double numb, 
                                        int objType) = 0;
};

// *********************************************************************//
// Interface: IAttribute3D
// Flags:     (16) Hidden
// GUID:      {F5529801-EDF2-42AE-B0A4-8AB6F5650AE1}
// *********************************************************************//
interface IAttribute3D  : public IUnknown
{
public:
  // [-1] Получить reference атрибута.
  virtual long STDMETHODCALLTYPE GetReference(void) = 0;
  // [-1] Получить массив объектов, имеющий данный атрибут (objType==o3d_unknown - выдавать все объекты).
  virtual Kompas6api3d5com_tlb::IFeatureCollection* STDMETHODCALLTYPE FeatureCollection(int objType) = 0;
  // [-1] Получить имя типа атрибута.
  virtual LPWSTR STDMETHODCALLTYPE GetNameType(void) = 0;
};

// *********************************************************************//
// Interface: IEntityCollection
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0303-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IEntityCollection  : public IUnknown
{
public:
  // [-1] Обновить массив интерфейсов объектов трехмерной модели(осей, плоскостей и т.п.).
  virtual long STDMETHODCALLTYPE Refresh(void) = 0;
  // [-1] Получить количество элементов в массиве.
  virtual long STDMETHODCALLTYPE GetCount(void) = 0;
  // [-1] Получить указатель на интерфейс первого объекта в массиве.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE First(void) = 0;
  // [-1] Получить указатель на интерфейс последнего объекта в массиве.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE Last(void) = 0;
  // [-1] Получить указатель на интерфейс следующего объекта в массиве.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE Next(void) = 0;
  // [-1] Получить указатель на интерфейс предыдущего объекта в массиве.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE Prev(void) = 0;
  // [-1] Получить указатель на интерфейс объекта в массиве по имени.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetByName(LPWSTR name, long testFullName, 
                                                                     long testIgnoreCase) = 0;
  // [-1] Получить указатель на интерфейс объекта в массиве по индексу.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetByIndex(long index) = 0;
  // [-1] Селектировать только те объекты, которые содержат указанную точку.
  virtual long STDMETHODCALLTYPE SelectByPoint(double x, double y, double z) = 0;
  // [-1] Добавить объект в массив.
  virtual long STDMETHODCALLTYPE Add(Kompas6api3d5com_tlb::IEntity* entity) = 0;
  // [-1] Добавить объект в массив с заданным индексом.
  virtual long STDMETHODCALLTYPE AddAt(Kompas6api3d5com_tlb::IEntity* entity, long index) = 0;
  // [-1] Добавить объект перед указанным объектом в массиве.
  virtual long STDMETHODCALLTYPE AddBefore(Kompas6api3d5com_tlb::IEntity* entity, 
                                           Kompas6api3d5com_tlb::IEntity* base) = 0;
  // [-1] Удалить объект из массива по индексу.
  virtual long STDMETHODCALLTYPE DetachByIndex(long index) = 0;
  // [-1] Удалить указанный объект из массива.
  virtual long STDMETHODCALLTYPE DetachByBody(Kompas6api3d5com_tlb::IEntity* entity) = 0;
  // [-1] Очистить динамический массив объектов.
  virtual long STDMETHODCALLTYPE Clear(void) = 0;
  // [-1] Установить объект с указанным индексом в массиве на присланный объект.
  virtual long STDMETHODCALLTYPE SetByIndex(Kompas6api3d5com_tlb::IEntity* entity, long index) = 0;
  // [-1] Получить индекс элемента массива.
  virtual unsigned_long STDMETHODCALLTYPE FindIt(Kompas6api3d5com_tlb::IEntity* entity) = 0;
};

// *********************************************************************//
// Interface: IVariableCollection
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0311-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IVariableCollection  : public IUnknown
{
public:
  // [-1] Обновить массив внешних переменных.
  virtual long STDMETHODCALLTYPE Refresh(void) = 0;
  // [-1] Получить количество элементов массива.
  virtual long STDMETHODCALLTYPE GetCount(void) = 0;
  // [-1] Получить указатель на интерфейс первого элемента массива.
  virtual Kompas6api3d5com_tlb::IVariable* STDMETHODCALLTYPE First(void) = 0;
  // [-1] Получить указатель на интерфейс последнего элемента массива.
  virtual Kompas6api3d5com_tlb::IVariable* STDMETHODCALLTYPE Last(void) = 0;
  // [-1] Получить указатель на интерфейс следующего элемента массива.
  virtual Kompas6api3d5com_tlb::IVariable* STDMETHODCALLTYPE Next(void) = 0;
  // [-1] Получить указатель на интерфейс предыдущего элемента массива.
  virtual Kompas6api3d5com_tlb::IVariable* STDMETHODCALLTYPE Prev(void) = 0;
  // [-1] Получить указатель на интерфейс элемента массива по индексу.
  virtual Kompas6api3d5com_tlb::IVariable* STDMETHODCALLTYPE GetByIndex(long index) = 0;
  // [-1] Получить указатель на интерфейс элемента массива по имени.
  virtual Kompas6api3d5com_tlb::IVariable* STDMETHODCALLTYPE GetByName(LPWSTR name, 
                                                                       long testFullName, 
                                                                       long testIgnoreCase) = 0;
  // [-1] Добавить новую переменную.
  virtual Kompas6api3d5com_tlb::IVariable* STDMETHODCALLTYPE AddNewVariable(LPWSTR name, 
                                                                            double value, 
                                                                            LPWSTR note) = 0;
  // [-1] Удалить переменную.
  virtual long STDMETHODCALLTYPE RemoveVariable(LPWSTR name) = 0;
};

// *********************************************************************//
// Interface: IVariable
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0312-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IVariable  : public IUnknown
{
public:
  // [-1] Получить имя переменной.
  virtual LPWSTR STDMETHODCALLTYPE GetName(void) = 0;
  // [-1] Получить комментарий к переменной.
  virtual LPWSTR STDMETHODCALLTYPE GetNote(void) = 0;
  // [-1] Установить комментарий к переменной.
  virtual long STDMETHODCALLTYPE SetNote(LPWSTR note) = 0;
  // [-1] Получить значение переменной.
  virtual double STDMETHODCALLTYPE GetValue(void) = 0;
  // [-1] Установить значение переменной.
  virtual long STDMETHODCALLTYPE SetValue(double val) = 0;
  // [-1] Получить указатель на структуру параметров (не документированно!).
  virtual void* STDMETHODCALLTYPE GetParam(void) = 0;
  // [-1] Получить псевдоним.
  virtual LPWSTR STDMETHODCALLTYPE GetPseudonym(void) = 0;
  // [-1] Установить псевдоним.
  virtual long STDMETHODCALLTYPE SetPseudonym(LPWSTR val) = 0;
  // [-1] Получить выражение.
  virtual LPWSTR STDMETHODCALLTYPE GetExpression(void) = 0;
  // [-1] Установить выражение.
  virtual long STDMETHODCALLTYPE SetExpression(LPWSTR exp) = 0;
  // [-1] Внешняя переменная.
  virtual long STDMETHODCALLTYPE GetExternal(void) = 0;
  // [-1] Внешняя переменная.
  virtual long STDMETHODCALLTYPE SetExternal(long fVal) = 0;
  // [-1] Получить имя параметра переменной.
  virtual LPWSTR STDMETHODCALLTYPE GetParameterNote(void) = 0;
  // [-1] Получить имя переменной на которую задана ссылка.
  virtual LPWSTR STDMETHODCALLTYPE GetLinkVarName(void) = 0;
  // [-1] Получить документ в котором хранится ссылочная переменная.
  virtual LPWSTR STDMETHODCALLTYPE GetLinkDocName(void) = 0;
  // [-1] Установить ссылку на переменную.
  virtual long STDMETHODCALLTYPE SetLink(LPWSTR doc, LPWSTR name) = 0;
  // [-1] Получить отображаемое имя переменной.
  virtual LPWSTR STDMETHODCALLTYPE GetDisplayName(void) = 0;
  // [-1] Информационная переменная.
  virtual long STDMETHODCALLTYPE GetInformation(void) = 0;
  // [-1] Информационная переменная.
  virtual long STDMETHODCALLTYPE SetInformation(long fVal) = 0;
};

// *********************************************************************//
// Interface: IBodyCollection
// Flags:     (16) Hidden
// GUID:      {64CBC7CB-005D-47DF-8B3E-53FD974C5A32}
// *********************************************************************//
interface IBodyCollection  : public IUnknown
{
public:
  // [-1] Обновить массив.
  virtual long STDMETHODCALLTYPE Refresh(void) = 0;
  // [-1] Получить количество элемент массива.
  virtual long STDMETHODCALLTYPE GetCount(void) = 0;
  // [-1] Первый элемент.
  virtual Kompas6api3d5com_tlb::IBody* STDMETHODCALLTYPE First(void) = 0;
  // [-1] Последний элемент.
  virtual Kompas6api3d5com_tlb::IBody* STDMETHODCALLTYPE Last(void) = 0;
  // [-1] Следующий элемент.
  virtual Kompas6api3d5com_tlb::IBody* STDMETHODCALLTYPE Next(void) = 0;
  // [-1] Предыдущий элемент.
  virtual Kompas6api3d5com_tlb::IBody* STDMETHODCALLTYPE Prev(void) = 0;
  // [-1] Получить элемент по индексу.
  virtual Kompas6api3d5com_tlb::IBody* STDMETHODCALLTYPE GetByIndex(long index) = 0;
  // [-1] Получить индекс элемента массива.
  virtual unsigned_long STDMETHODCALLTYPE FindIt(Kompas6api3d5com_tlb::IBody* entity) = 0;
  // [-1] Очистить массив.
  virtual long STDMETHODCALLTYPE Clear(void) = 0;
  // [-1] Добавить элемент в конец массива.
  virtual long STDMETHODCALLTYPE Add(Kompas6api3d5com_tlb::IBody* entity) = 0;
  // [-1] Добавить элемент перед элемента с индексом.
  virtual long STDMETHODCALLTYPE AddAt(Kompas6api3d5com_tlb::IBody* entity, long index) = 0;
  // [-1] Добавить элемент перед элементом.
  virtual long STDMETHODCALLTYPE AddBefore(Kompas6api3d5com_tlb::IBody* entity, 
                                           Kompas6api3d5com_tlb::IBody* base) = 0;
  // [-1] Отсоединить элемент.
  virtual long STDMETHODCALLTYPE DetachByIndex(long index) = 0;
  // [-1] Отсоединить элемент.
  virtual long STDMETHODCALLTYPE DetachByBody(Kompas6api3d5com_tlb::IBody* entity) = 0;
  // [-1] Заменить элемент.
  virtual long STDMETHODCALLTYPE SetByIndex(Kompas6api3d5com_tlb::IBody* entity, long index) = 0;
};

// *********************************************************************//
// Interface: IBody
// Flags:     (16) Hidden
// GUID:      {BE70EEE5-1767-483E-9D18-79BCEC5AB837}
// *********************************************************************//
interface IBody  : public IUnknown
{
public:
  // [-1] Выдать габарит.
  virtual long STDMETHODCALLTYPE GetGabarit(double* x1, double* y1, double* z1, double* x2, 
                                            double* y2, double* z2) = 0;
  // [-1] Получить массив граней.
  virtual Kompas6api3d5com_tlb::IFaceCollection* STDMETHODCALLTYPE FaceCollection(void) = 0;
  // [-1] TRUE - твердое тело FALSE - оболочка.
  virtual long STDMETHODCALLTYPE IsSolid(void) = 0;
  // [-1] Определить массо-центровочные характеристики. bitVector - определяет размерность длины, размерность массы, флаги находятся в интервале [ST_MIX_MM..ST_MIX_KG]. Пример  ( метры|кг| ST_MIX_M|ST_MIX_KG ).
  virtual Kompas6api3d5com_tlb::IMassInertiaParam* STDMETHODCALLTYPE CalcMassInertiaProperties(unsigned bitVector) = 0;
  // [-1] Расчет пересечений c кривой.
  virtual long STDMETHODCALLTYPE CurveIntersection(Kompas6api3d5com_tlb::ICurve3D* curve, 
                                                   Kompas6api3d5com_tlb::IFaceCollection* faces, 
                                                   Kompas6api3d5com_tlb::ICoordinate3dCollection* points) = 0;
  // [-1] Проверка наличия пересечений с другим телом.
  virtual Kompas6api3d5com_tlb::IIntersectionResult* STDMETHODCALLTYPE CheckIntersectionWithBody(Kompas6api3d5com_tlb::IBody* otherBody, 
                                                                                                 long checkTangent) = 0;
  // [-1] Получить признак многочастей.
  virtual long STDMETHODCALLTYPE GetMultiBodyParts(void) = 0;
  // [-1] Получить объект дерева, связанный с данным телом.
  virtual Kompas6api3d5com_tlb::IFeature* STDMETHODCALLTYPE GetFeature(void) = 0;
  // [-1] Определить взаимодействующие грани при пересечении данного тела с другим.
  virtual long STDMETHODCALLTYPE GetIntersectionFacesWithBody(Kompas6api3d5com_tlb::IBody* otherBody/*[in]*/, 
                                                              VARIANT* intersectionFaces1/*[in,out]*/, 
                                                              VARIANT* intersectionFaces2/*[in,out]*/, 
                                                              VARIANT* connectedFaces1/*[in,out]*/, 
                                                              VARIANT* connectedFaces2/*[in,out]*/) = 0;
};

// *********************************************************************//
// Interface: IFaceCollection
// Flags:     (16) Hidden
// GUID:      {D269AD47-B2CC-4152-A7BA-127242371208}
// *********************************************************************//
interface IFaceCollection  : public IUnknown
{
public:
  // [-1] Обновить массив.
  virtual long STDMETHODCALLTYPE Refresh(void) = 0;
  // [-1] Получить количество элемент массива.
  virtual long STDMETHODCALLTYPE GetCount(void) = 0;
  // [-1] Первый элемент.
  virtual Kompas6api3d5com_tlb::IFaceDefinition* STDMETHODCALLTYPE First(void) = 0;
  // [-1] Последний элемент.
  virtual Kompas6api3d5com_tlb::IFaceDefinition* STDMETHODCALLTYPE Last(void) = 0;
  // [-1] Следующий элемент.
  virtual Kompas6api3d5com_tlb::IFaceDefinition* STDMETHODCALLTYPE Next(void) = 0;
  // [-1] Предыдущий элемент.
  virtual Kompas6api3d5com_tlb::IFaceDefinition* STDMETHODCALLTYPE Prev(void) = 0;
  // [-1] Получить элемент по индексу.
  virtual Kompas6api3d5com_tlb::IFaceDefinition* STDMETHODCALLTYPE GetByIndex(long index) = 0;
  // [-1] Получить указатель на интерфейс элемента массива по имени.
  virtual Kompas6api3d5com_tlb::IFaceDefinition* STDMETHODCALLTYPE GetByName(LPWSTR name, 
                                                                             long testFullName, 
                                                                             long testIgnoreCase) = 0;
  // [-1] Получить индекс элемента массива.
  virtual unsigned_long STDMETHODCALLTYPE FindIt(Kompas6api3d5com_tlb::IFaceDefinition* entity) = 0;
};

// *********************************************************************//
// Interface: IFaceDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0322-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IFaceDefinition  : public IUnknown
{
public:
  // [-1] Определить, плоская ли грань.
  virtual long STDMETHODCALLTYPE IsPlanar(void) = 0;
  // [-1] Определить, коническая ли грань.
  virtual long STDMETHODCALLTYPE IsCone(void) = 0;
  // [-1] Определить, цилиндрическая ли грань.
  virtual long STDMETHODCALLTYPE IsCylinder(void) = 0;
  // [-1] Получить параметры цилиндрической грани.
  virtual long STDMETHODCALLTYPE GetCylinderParam(double* h, double* r) = 0;
  // [-1] Получить указатель на объект, породивший грань.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetOwnerEntity(void) = 0;
  // [-1] Получить интерфейс математической поверхности.
  virtual Kompas6api3d5com_tlb::ISurface* STDMETHODCALLTYPE GetSurface(void) = 0;
  // [-1] Получить массив циклов.
  virtual Kompas6api3d5com_tlb::ILoopCollection* STDMETHODCALLTYPE LoopCollection(void) = 0;
  // [-1] Получить признак ориентации нормали, TRUE если он совпадает с направлением нормали поверхности.
  virtual long STDMETHODCALLTYPE GetNormalOrientation(void) = 0;
  // [-1] Связаны ли грани.
  virtual long STDMETHODCALLTYPE IsConnectedWith(Kompas6api3d5com_tlb::IFaceDefinition* faceDefinition) = 0;
  // [-1] Получить массив граней, стыкующихся с данной гранью.
  virtual Kompas6api3d5com_tlb::IFaceCollection* STDMETHODCALLTYPE ConnectedFaceCollection(void) = 0;
  // [-1] Получить массив ребер, ограничивающих грань.
  virtual Kompas6api3d5com_tlb::IEdgeCollection* STDMETHODCALLTYPE EdgeCollection(void) = 0;
  // [-1] Получить следующую грань в этом теле.
  virtual Kompas6api3d5com_tlb::IFaceDefinition* STDMETHODCALLTYPE GetNextFace(void) = 0;
  // [-1] Является ли грань тором.
  virtual long STDMETHODCALLTYPE IsTorus(void) = 0;
  // [-1] Является ли грань сферической.
  virtual long STDMETHODCALLTYPE IsSphere(void) = 0;
  // [-1] Является ли грань nurbs поверхностью.
  virtual long STDMETHODCALLTYPE IsNurbsSurface(void) = 0;
  // [-1] Определяется ли грань поверхностью вращения.
  virtual long STDMETHODCALLTYPE IsRevolved(void) = 0;
  // [-1] Определяется ли грань поверхностью по траектории.
  virtual long STDMETHODCALLTYPE IsSwept(void) = 0;
  // [-1] Получить интерфейс триангуляции.
  virtual Kompas6api3d5com_tlb::ITessellation* STDMETHODCALLTYPE GetTessellation(void) = 0;
  // [-1] Получить площадь грани (ST_MIX_MM..ST_MIX_M еденицы измерения).
  virtual double STDMETHODCALLTYPE GetArea(unsigned_long bitVector) = 0;
  // [-1] Получить указатель на объект - грань.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetEntity(void) = 0;
  // [-1] Получить индикатор доступности объекта.
  virtual long STDMETHODCALLTYPE IsValid(void) = 0;
};

// *********************************************************************//
// Interface: ISurface
// Flags:     (16) Hidden
// GUID:      {081C7F2D-D5BC-40A6-92FE-C16B67D10B75}
// *********************************************************************//
interface ISurface  : public IUnknown
{
public:
  // [-1] Получить габарит.
  virtual long STDMETHODCALLTYPE GetGabarit(double* x1, double* y1, double* z1, double* x2, 
                                            double* y2, double* z2) = 0;
  // [-1] Получить точку на поверхности.
  virtual long STDMETHODCALLTYPE GetPoint(double paramU, double paramV, double* x, double* y, 
                                          double* z) = 0;
  // [-1] Получить нормаль.
  virtual long STDMETHODCALLTYPE GetNormal(double paramU, double paramV, double* x, double* y, 
                                           double* z) = 0;
  // [-1] Получить касательный вектор по U.
  virtual long STDMETHODCALLTYPE GetTangentVectorU(double paramU, double paramV, double* x, 
                                                   double* y, double* z) = 0;
  // [-1] Получить касательный вектор по V.
  virtual long STDMETHODCALLTYPE GetTangentVectorV(double paramU, double paramV, double* x, 
                                                   double* y, double* z) = 0;
  // [-1] Получить первую производную по U.
  virtual long STDMETHODCALLTYPE GetDerivativeU(double paramU, double paramV, double* x, double* y, 
                                                double* z) = 0;
  // [-1] Получить первую производную по V.
  virtual long STDMETHODCALLTYPE GetDerivativeV(double paramU, double paramV, double* x, double* y, 
                                                double* z) = 0;
  // [-1] Получить вторую производную по UU.
  virtual long STDMETHODCALLTYPE GetDerivativeUU(double paramU, double paramV, double* x, double* y, 
                                                 double* z) = 0;
  // [-1] Получить вторую производную по UU.
  virtual long STDMETHODCALLTYPE GetDerivativeVV(double paramU, double paramV, double* x, double* y, 
                                                 double* z) = 0;
  // [-1] Получить вторую производную по UV.
  virtual long STDMETHODCALLTYPE GetDerivativeUV(double paramU, double paramV, double* x, double* y, 
                                                 double* z) = 0;
  // [-1] Получить третью производную по UUU.
  virtual long STDMETHODCALLTYPE GetDerivativeUUU(double paramU, double paramV, double* x, double* y, 
                                                  double* z) = 0;
  // [-1] Получить третью производную по VVV.
  virtual long STDMETHODCALLTYPE GetDerivativeVVV(double paramU, double paramV, double* x, double* y, 
                                                  double* z) = 0;
  // [-1] Получить третью производную по UVV.
  virtual long STDMETHODCALLTYPE GetDerivativeUVV(double paramU, double paramV, double* x, double* y, 
                                                  double* z) = 0;
  // [-1] Получить третью производную по UUV.
  virtual long STDMETHODCALLTYPE GetDerivativeUUV(double paramU, double paramV, double* x, double* y, 
                                                  double* z) = 0;
  // [-1] Получить значение параметра U начальное.
  virtual double STDMETHODCALLTYPE GetParamUMin(void) = 0;
  // [-1] Получить значение параметра U конечное.
  virtual double STDMETHODCALLTYPE GetParamUMax(void) = 0;
  // [-1] Получить значение параметра V начальное.
  virtual double STDMETHODCALLTYPE GetParamVMin(void) = 0;
  // [-1] Получить значение параметра V конечное.
  virtual double STDMETHODCALLTYPE GetParamVMax(void) = 0;
  // [-1] Получить замкнутость кривой.
  virtual long STDMETHODCALLTYPE IsClosedU(void) = 0;
  // [-1] Получить замкнутость кривой.
  virtual long STDMETHODCALLTYPE IsClosedV(void) = 0;
  // [-1] Является ли грань плоской.
  virtual long STDMETHODCALLTYPE IsPlane(void) = 0;
  // [-1] Является ли грань конической.
  virtual long STDMETHODCALLTYPE IsCone(void) = 0;
  // [-1] Является ли грань цилиндрической.
  virtual long STDMETHODCALLTYPE IsCylinder(void) = 0;
  // [-1] Является ли грань тором.
  virtual long STDMETHODCALLTYPE IsTorus(void) = 0;
  // [-1] Является ли грань сферической.
  virtual long STDMETHODCALLTYPE IsSphere(void) = 0;
  // [-1] Является ли грань nurbs поверхностью.
  virtual long STDMETHODCALLTYPE IsNurbsSurface(void) = 0;
  // [-1] Определяется ли грань поверхностью вращения.
  virtual long STDMETHODCALLTYPE IsRevolved(void) = 0;
  // [-1] Определяется ли грань поверхностью по траектории.
  virtual long STDMETHODCALLTYPE IsSwept(void) = 0;
  // [-1] Получить параметры плоскости, конуса, цилиндра, тора, сферы, nurbs-поверхности или NULL.
  virtual LPUNKNOWN STDMETHODCALLTYPE GetSurfaceParam(void) = 0;
  // [-1] Получить площадь грани (ST_MIX_MM..ST_MIX_M еденицы измерения).
  virtual double STDMETHODCALLTYPE GetArea(unsigned_long bitVector) = 0;
  // [-1] Получить ближайшую проекцию точки на поверхность.
  virtual long STDMETHODCALLTYPE NearPointProjection(double x/*[in]*/, double y/*[in]*/, 
                                                     double z/*[in]*/, double* u/*[out]*/, 
                                                     double* v/*[out]*/, long ext/*[in]*/) = 0;
  // [-1] Расчет пересечений c кривой.
  virtual long STDMETHODCALLTYPE CurveIntersection(Kompas6api3d5com_tlb::ICurve3D* curve, 
                                                   Kompas6api3d5com_tlb::ICoordinate3dCollection* pointsArr, 
                                                   long extSurf, long extCurve) = 0;
  // [-1] Получить параметры поверхности в Nurbs-представлении.
  virtual Kompas6api3d5com_tlb::INurbsSurfaceParam* STDMETHODCALLTYPE GetNurbsSurfaceParam(void) = 0;
  // [-1] Получить параметры границы поверхности в UV NURBS-прадставлении.
  virtual long STDMETHODCALLTYPE GetBoundaryUVNurbs(long uv/*[in]*/, long closed/*[in]*/, 
                                                    long loopIndex/*[in]*/, long edgeIndex/*[in]*/, 
                                                    long* degree/*[out]*/, VARIANT* points/*[out]*/, 
                                                    VARIANT* weights/*[out]*/, 
                                                    VARIANT* knots/*[out]*/, double* tMin/*[out]*/, 
                                                    double* tMax/*[out]*/) = 0;
  // [-1] Получить количество границ.
  virtual long STDMETHODCALLTYPE GetBoundaryCount(void) = 0;
  // [-1] Получить количество ребер в границе.
  virtual long STDMETHODCALLTYPE GetEdgesCount(long loopIndex) = 0;
};

// *********************************************************************//
// Interface: ICurve3D
// Flags:     (16) Hidden
// GUID:      {E5066490-773D-4289-A60B-2FC19865174A}
// *********************************************************************//
interface ICurve3D  : public IUnknown
{
public:
  // [-1] Точка на кривой.
  virtual long STDMETHODCALLTYPE GetPoint(double paramT/*[in]*/, double* x/*[out]*/, 
                                          double* y/*[out]*/, double* z/*[out]*/) = 0;
  // [-1] Тангенциальный вектор (нормализованный).
  virtual long STDMETHODCALLTYPE GetTangentVector(double paramT/*[in]*/, double* x/*[in]*/, 
                                                  double* y/*[in]*/, double* z/*[in]*/) = 0;
  // [-1] Нормаль.
  virtual long STDMETHODCALLTYPE GetNormal(double paramT/*[in]*/, double* x/*[out]*/, 
                                           double* y/*[out]*/, double* z/*[out]*/) = 0;
  // [-1] Первая производная по T.
  virtual long STDMETHODCALLTYPE GetDerivativeT(double paramT/*[in]*/, double* x/*[out]*/, 
                                                double* y/*[out]*/, double* z/*[out]*/) = 0;
  // [-1] Вторая производная по T.
  virtual long STDMETHODCALLTYPE GetDerivativeTT(double paramT/*[in]*/, double* x/*[out]*/, 
                                                 double* y/*[out]*/, double* z/*[out]*/) = 0;
  // [-1] Третья производная по T.
  virtual long STDMETHODCALLTYPE GetDerivativeTTT(double paramT/*[in]*/, double* x/*[out]*/, 
                                                  double* y/*[out]*/, double* z/*[out]*/) = 0;
  // [-1] Получить значение параметра начальное.
  virtual double STDMETHODCALLTYPE GetParamMin(void) = 0;
  // [-1] Получить значение параметра конечное.
  virtual double STDMETHODCALLTYPE GetParamMax(void) = 0;
  // [-1] Замкнутость кривой.
  virtual long STDMETHODCALLTYPE IsClosed(void) = 0;
  // [-1] Периодичность замкнутой кривой.
  virtual long STDMETHODCALLTYPE IsPeriodic(void) = 0;
  // [-1] Метрическая длина кривой.
  virtual double STDMETHODCALLTYPE GetMetricLength(double startParam, double endParam) = 0;
  // [-1] Выдать габарит кривой.
  virtual long STDMETHODCALLTYPE GetGabarit(double* x1/*[out]*/, double* y1/*[out]*/, 
                                            double* z1/*[out]*/, double* x2/*[out]*/, 
                                            double* y2/*[out]*/, double* z2/*[out]*/) = 0;
  // [-1] Проверка вырожденности кривой.
  virtual long STDMETHODCALLTYPE IsDegenerate(void) = 0;
  // [-1] Является ли кривая плоской.
  virtual long STDMETHODCALLTYPE IsPlanar(void) = 0;
  // [-1] Является ли кривая линией.
  virtual long STDMETHODCALLTYPE IsLineSeg(void) = 0;
  // [-1] Является ли кривая дугой окружности.
  virtual long STDMETHODCALLTYPE IsArc(void) = 0;
  // [-1] Является ли кривая окружностью.
  virtual long STDMETHODCALLTYPE IsCircle(void) = 0;
  // [-1] Является ли кривая эллипсом.
  virtual long STDMETHODCALLTYPE IsEllipse(void) = 0;
  // [-1] Является ли кривая нурбсом.
  virtual long STDMETHODCALLTYPE IsNurbs(void) = 0;
  // [-1] Параметры линии, окружности, эллипса, nurbs или NULL.
  virtual LPUNKNOWN STDMETHODCALLTYPE GetCurveParam(void) = 0;
  // [-1] Получить длину кривой (ST_MIX_MM..ST_MIX_M еденицы измерения).
  virtual double STDMETHODCALLTYPE GetLength(unsigned bitVector) = 0;
  // [-1] Получить ближайшую проекцию точки на кривую.
  virtual long STDMETHODCALLTYPE NearPointProjection(double x/*[in]*/, double y/*[in]*/, 
                                                     double z/*[in]*/, double* t/*[out]*/, 
                                                     long ext/*[in]*/) = 0;
  // [-1] Получить параметры кривой в Nurbs-представлении.
  virtual Kompas6api3d5com_tlb::INurbs3dParam* STDMETHODCALLTYPE GetNurbs3dParam(void) = 0;
  // [-1] Получить полигон точек на кривой.
  virtual long STDMETHODCALLTYPE CalculatePolygon(double step/*[in]*/, VARIANT* points/*[out]*/) = 0;
};

// *********************************************************************//
// Interface: INurbs3dParam
// Flags:     (16) Hidden
// GUID:      {0363CD73-028A-485F-92BF-B4DB4B3E239A}
// *********************************************************************//
interface INurbs3dParam  : public IUnknown
{
public:
  // [-1] Степень сплайна > 2 && < 9.
  virtual short STDMETHODCALLTYPE GetDegree(void) = 0;
  // [-1] Тип замыкания сплайна 0 - незамкнутый 1 - замкнутый.
  virtual long STDMETHODCALLTYPE GetClose(void) = 0;
  // [-1] 1 - сплайн периодический; 0 - не периодический -только GetObjParam.
  virtual long STDMETHODCALLTYPE GetPeriodic(void) = 0;
  // [-1] Массив точек для Nurbs 3D.
  virtual Kompas6api3d5com_tlb::INurbsPoint3dCollection* STDMETHODCALLTYPE GetPointCollection(void) = 0;
  // [-1] Массив узлов для Nurbs 3D.
  virtual Kompas6api3d5com_tlb::INurbsKnotCollection* STDMETHODCALLTYPE GetKnotCollection(void) = 0;
  // [-1] Получить парамеры точек для Nurbs 3D.
  virtual long STDMETHODCALLTYPE GetNurbsPoints3DParams(long closed/*[in]*/, VARIANT* points/*[in]*/, 
                                                        VARIANT* weights/*[in]*/, 
                                                        VARIANT* knots/*[in]*/) = 0;
  // [-1] Получить параметры кривой.
  virtual long STDMETHODCALLTYPE GetMinMaxParameters(long closed/*[in]*/, double* tMin/*[out]*/, 
                                                     double* tMax/*[out]*/) = 0;
};

// *********************************************************************//
// Interface: INurbsPoint3dCollection
// Flags:     (16) Hidden
// GUID:      {AC0E0F4D-ACCE-40C4-9B7C-14DAAF224F48}
// *********************************************************************//
interface INurbsPoint3dCollection  : public IUnknown
{
public:
  // [-1] Обновить массив.
  virtual long STDMETHODCALLTYPE Refresh(void) = 0;
  // [-1] Получить количество точек массива.
  virtual long STDMETHODCALLTYPE GetCount(void) = 0;
  // [-1] Первый элемент.
  virtual Kompas6api3d5com_tlb::INurbsPoint3dParam* STDMETHODCALLTYPE First(void) = 0;
  // [-1] Последний элемент.
  virtual Kompas6api3d5com_tlb::INurbsPoint3dParam* STDMETHODCALLTYPE Last(void) = 0;
  // [-1] Следующий элемент.
  virtual Kompas6api3d5com_tlb::INurbsPoint3dParam* STDMETHODCALLTYPE Next(void) = 0;
  // [-1] Предыдущий элемент.
  virtual Kompas6api3d5com_tlb::INurbsPoint3dParam* STDMETHODCALLTYPE Prev(void) = 0;
  // [-1] Получить элемент по индексу.
  virtual Kompas6api3d5com_tlb::INurbsPoint3dParam* STDMETHODCALLTYPE GetByIndex(long index) = 0;
  // [-1] Очистить массив.
  virtual long STDMETHODCALLTYPE Clear(void) = 0;
  // [-1] Добавить элемент в конец массива.
  virtual long STDMETHODCALLTYPE Add(Kompas6api3d5com_tlb::INurbsPoint3dParam* entity) = 0;
  // [-1] Добавить элемент перед элемента с индексом.
  virtual long STDMETHODCALLTYPE AddAt(Kompas6api3d5com_tlb::INurbsPoint3dParam* entity, long index) = 0;
  // [-1] Добавить элемент перед элементом.
  virtual long STDMETHODCALLTYPE AddBefore(Kompas6api3d5com_tlb::INurbsPoint3dParam* entity, 
                                           Kompas6api3d5com_tlb::INurbsPoint3dParam* base) = 0;
  // [-1] Отсоединить элемент.
  virtual long STDMETHODCALLTYPE DetachByIndex(long index) = 0;
  // [-1] Отсоединить элемент.
  virtual long STDMETHODCALLTYPE DetachByBody(Kompas6api3d5com_tlb::INurbsPoint3dParam* entity) = 0;
  // [-1] Заменить элемент.
  virtual long STDMETHODCALLTYPE SetByIndex(Kompas6api3d5com_tlb::INurbsPoint3dParam* entity, 
                                            long index) = 0;
  // [-1] Получить индекс элемента массива.
  virtual unsigned_long STDMETHODCALLTYPE FindIt(Kompas6api3d5com_tlb::INurbsPoint3dParam* entity) = 0;
};

// *********************************************************************//
// Interface: INurbsPoint3dParam
// Flags:     (16) Hidden
// GUID:      {47CDB649-C027-4E8D-8E25-1461CC6D7C12}
// *********************************************************************//
interface INurbsPoint3dParam  : public IUnknown
{
public:
  // [-1] Координаты базовой точки.
  virtual long STDMETHODCALLTYPE GetPoint(double* x/*[out]*/, double* y/*[out]*/, double* z/*[out]*/) = 0;
  // [-1] Вес точки должен быть > 0.
  virtual double STDMETHODCALLTYPE GetWeight(void) = 0;
};

// *********************************************************************//
// Interface: INurbsKnotCollection
// Flags:     (16) Hidden
// GUID:      {1F21432C-E5BA-404D-B18F-007A0D85CCD0}
// *********************************************************************//
interface INurbsKnotCollection  : public IUnknown
{
public:
  // [-1] Обновить массив.
  virtual long STDMETHODCALLTYPE Refresh(void) = 0;
  // [-1] Получить количество точек массива.
  virtual long STDMETHODCALLTYPE GetCount(void) = 0;
  // [-1] Первый элемент.
  virtual double STDMETHODCALLTYPE First(void) = 0;
  // [-1] Последний элемент.
  virtual double STDMETHODCALLTYPE Last(void) = 0;
  // [-1] Следующий элемент.
  virtual double STDMETHODCALLTYPE Next(void) = 0;
  // [-1] Предыдущий элемент.
  virtual double STDMETHODCALLTYPE Prev(void) = 0;
  // [-1] Получить элемент по индексу.
  virtual double STDMETHODCALLTYPE GetByIndex(long index) = 0;
  // [-1] Очистить массив.
  virtual long STDMETHODCALLTYPE Clear(void) = 0;
  // [-1] Добавить элемент в конец массива.
  virtual long STDMETHODCALLTYPE Add(double entity) = 0;
  // [-1] Добавить элемент перед элемента с индексом.
  virtual long STDMETHODCALLTYPE AddAt(double entity, long index) = 0;
  // [-1] Добавить элемент перед элементом.
  virtual long STDMETHODCALLTYPE AddBefore(double entity, double base) = 0;
  // [-1] Отсоединить элемент.
  virtual long STDMETHODCALLTYPE DetachByIndex(long index) = 0;
  // [-1] Отсоединить элемент.
  virtual long STDMETHODCALLTYPE DetachByBody(double entity) = 0;
  // [-1] Заменить элемент.
  virtual long STDMETHODCALLTYPE SetByIndex(double entity, long index) = 0;
};

// *********************************************************************//
// Interface: ICoordinate3dCollection
// Flags:     (16) Hidden
// GUID:      {A5E6E83E-1F33-4EAF-BAFC-A3F434F23BAA}
// *********************************************************************//
interface ICoordinate3dCollection  : public IUnknown
{
public:
  // [-1] Получить количество точек.
  virtual long STDMETHODCALLTYPE GetCount(void) = 0;
  // [-1] Получить координаты точки по индексу.
  virtual long STDMETHODCALLTYPE GetByIndex(long index/*[in]*/, double* x/*[out]*/, 
                                            double* y/*[out]*/, double* z/*[out]*/) = 0;
  // [-1] Сформировать SAFEARRAY координат точек.
  virtual long STDMETHODCALLTYPE GetSafeArray(VARIANT* pArray/*[out]*/) = 0;
};

// *********************************************************************//
// Interface: INurbsSurfaceParam
// Flags:     (16) Hidden
// GUID:      {A5A1CB44-5F2E-4059-86B3-4F5056EFF956}
// *********************************************************************//
interface INurbsSurfaceParam  : public IUnknown
{
public:
  // [-1] Степень сплайна > 2 && < 9.
  virtual short STDMETHODCALLTYPE GetDegree(long paramU) = 0;
  // [-1] Тип замыкания сплайна 0 - незамкнутый 1 - замкнутый.
  virtual long STDMETHODCALLTYPE GetClose(long paramU) = 0;
  // [-1] 1 - сплайн периодический; 0 - не периодический -только GetObjParam.
  virtual long STDMETHODCALLTYPE GetPeriodic(long paramU) = 0;
  // [-1] Массив массивов точек для Nurbs-поверхности.
  virtual Kompas6api3d5com_tlb::INurbsPoint3dCollCollection* STDMETHODCALLTYPE GetPointCollection(void) = 0;
  // [-1] Массив узлов для Nurbs-поверхности.
  virtual Kompas6api3d5com_tlb::INurbsKnotCollection* STDMETHODCALLTYPE GetKnotCollection(long paramU) = 0;
  // [-1] Получить параметры Nurbs-поверхности.
  virtual long STDMETHODCALLTYPE GetNurbsParams(long closedV/*[in]*/, long closedU/*[in]*/, 
                                                long* degreeV/*[out]*/, long* degreeU/*[out]*/, 
                                                long* nPV/*[out]*/, long* nPU/*[out]*/, 
                                                VARIANT* points/*[out]*/, VARIANT* weights/*[out]*/, 
                                                VARIANT* knotsV/*[out]*/, VARIANT* knotsU/*[out]*/) = 0;
  // [-1] Получить параметры границы поверхности в UV NURBS-прадставлении.
  virtual long STDMETHODCALLTYPE GetBoundaryUVNurbs(long uv/*[in]*/, long closed/*[in]*/, 
                                                    long loopIndex/*[in]*/, long edgeIndex/*[in]*/, 
                                                    long* degree/*[out]*/, VARIANT* points/*[out]*/, 
                                                    VARIANT* weights/*[out]*/, 
                                                    VARIANT* knots/*[out]*/, double* tMin/*[out]*/, 
                                                    double* tMax/*[out]*/) = 0;
  // [-1] Получить количество границ.
  virtual long STDMETHODCALLTYPE GetBoundaryCount(void) = 0;
  // [-1] Получить количество ребер в границе.
  virtual long STDMETHODCALLTYPE GetEdgesCount(long loopIndex) = 0;
  // [-1] Получить параметры поверхности.
  virtual long STDMETHODCALLTYPE GetMinMaxParameters(long closedV/*[in]*/, long closedU/*[in]*/, 
                                                     double* uMin/*[out]*/, double* uMax/*[out]*/, 
                                                     double* vMin/*[out]*/, double* vMax/*[out]*/) = 0;
  // [-1] Получить uv параметры точки поверхности по параметру t ребра.
  virtual long STDMETHODCALLTYPE GetUVPointFromBoundaryParameter(long uv/*[in]*/, 
                                                                 long closed/*[in]*/, 
                                                                 long loopIndex/*[in]*/, 
                                                                 long edgeIndex/*[in]*/, 
                                                                 double t/*[in]*/, 
                                                                 double* u/*[out]*/, 
                                                                 double* v/*[out]*/) = 0;
  // [-1] Получить параметр t ребра по uv параметрам точки поверхности.
  virtual long STDMETHODCALLTYPE GetBoundaryParameterFromUVPoint(long uv/*[in]*/, 
                                                                 long closed/*[in]*/, 
                                                                 long loopIndex/*[in]*/, 
                                                                 long edgeIndex/*[in]*/, 
                                                                 double u/*[in]*/, double v/*[in]*/, 
                                                                 double* t/*[out]*/) = 0;
};

// *********************************************************************//
// Interface: INurbsPoint3dCollCollection
// Flags:     (16) Hidden
// GUID:      {EFEECE8A-4BB9-4D51-B6A4-AC1BEDA73568}
// *********************************************************************//
interface INurbsPoint3dCollCollection  : public IUnknown
{
public:
  // [-1] Обновить массив.
  virtual long STDMETHODCALLTYPE Refresh(void) = 0;
  // [-1] Получить количество точек массива.
  virtual long STDMETHODCALLTYPE GetCount(void) = 0;
  // [-1] Первый элемент.
  virtual Kompas6api3d5com_tlb::INurbsPoint3dCollection* STDMETHODCALLTYPE First(void) = 0;
  // [-1] Последний элемент.
  virtual Kompas6api3d5com_tlb::INurbsPoint3dCollection* STDMETHODCALLTYPE Last(void) = 0;
  // [-1] Следующий элемент.
  virtual Kompas6api3d5com_tlb::INurbsPoint3dCollection* STDMETHODCALLTYPE Next(void) = 0;
  // [-1] Предыдущий элемент.
  virtual Kompas6api3d5com_tlb::INurbsPoint3dCollection* STDMETHODCALLTYPE Prev(void) = 0;
  // [-1] Получить элемент по индексу.
  virtual Kompas6api3d5com_tlb::INurbsPoint3dCollection* STDMETHODCALLTYPE GetByIndex(long index) = 0;
  // [-1] Очистить массив.
  virtual long STDMETHODCALLTYPE Clear(void) = 0;
  // [-1] Добавить элемент в конец массива.
  virtual long STDMETHODCALLTYPE Add(Kompas6api3d5com_tlb::INurbsPoint3dCollection* entity) = 0;
  // [-1] Добавить элемент перед элемента с индексом.
  virtual long STDMETHODCALLTYPE AddAt(Kompas6api3d5com_tlb::INurbsPoint3dCollection* entity, 
                                       long index) = 0;
  // [-1] Добавить элемент перед элементом.
  virtual long STDMETHODCALLTYPE AddBefore(Kompas6api3d5com_tlb::INurbsPoint3dCollection* entity, 
                                           Kompas6api3d5com_tlb::INurbsPoint3dCollection* base) = 0;
  // [-1] Отсоединить элемент.
  virtual long STDMETHODCALLTYPE DetachByIndex(long index) = 0;
  // [-1] Отсоединить элемент.
  virtual long STDMETHODCALLTYPE DetachByBody(Kompas6api3d5com_tlb::INurbsPoint3dCollection* entity) = 0;
  // [-1] Заменить элемент.
  virtual long STDMETHODCALLTYPE SetByIndex(Kompas6api3d5com_tlb::INurbsPoint3dCollection* entity, 
                                            long index) = 0;
  // [-1] Получить индекс элемента массива.
  virtual unsigned_long STDMETHODCALLTYPE FindIt(Kompas6api3d5com_tlb::INurbsPoint3dCollection* entity) = 0;
};

// *********************************************************************//
// Interface: ILoopCollection
// Flags:     (16) Hidden
// GUID:      {22866947-F414-484B-8CCC-F4440BFEF92F}
// *********************************************************************//
interface ILoopCollection  : public IUnknown
{
public:
  // [-1] Обновить массив.
  virtual long STDMETHODCALLTYPE Refresh(void) = 0;
  // [-1] Получить количество элемент массива.
  virtual long STDMETHODCALLTYPE GetCount(void) = 0;
  // [-1] Первый элемент.
  virtual Kompas6api3d5com_tlb::ILoop* STDMETHODCALLTYPE First(void) = 0;
  // [-1] Последний элемент.
  virtual Kompas6api3d5com_tlb::ILoop* STDMETHODCALLTYPE Last(void) = 0;
  // [-1] Следующий элемент.
  virtual Kompas6api3d5com_tlb::ILoop* STDMETHODCALLTYPE Next(void) = 0;
  // [-1] Предыдущий элемент.
  virtual Kompas6api3d5com_tlb::ILoop* STDMETHODCALLTYPE Prev(void) = 0;
  // [-1] Получить элемент по индексу.
  virtual Kompas6api3d5com_tlb::ILoop* STDMETHODCALLTYPE GetByIndex(long index) = 0;
  // [-1] Получить индекс элемента массива.
  virtual unsigned_long STDMETHODCALLTYPE FindIt(Kompas6api3d5com_tlb::ILoop* entity) = 0;
};

// *********************************************************************//
// Interface: ILoop
// Flags:     (16) Hidden
// GUID:      {56965A12-03BB-4068-8AE9-BEFC23EEEB37}
// *********************************************************************//
interface ILoop  : public IUnknown
{
public:
  // [-1] Получить массив ориентированных ребер. LPEDGEDEFINITION = NULL -весь массив, не NULL массив ориентированных ребер, которые содержат данное ребро.
  virtual Kompas6api3d5com_tlb::IOrientedEdgeCollection* STDMETHODCALLTYPE OrientedEdgeCollection(Kompas6api3d5com_tlb::IEdgeDefinition* val) = 0;
  // [-1] Получить массив ребер.
  virtual Kompas6api3d5com_tlb::IEdgeCollection* STDMETHODCALLTYPE EdgeCollection(void) = 0;
  // [-1] TRUE - цикл внешний, FALSE - цикл внутренний.
  virtual long STDMETHODCALLTYPE IsOuter(void) = 0;
  // [-1] Получить общую длину ребер. bitVector = ST_MIX_MM..ST_MIX_M еденицы измерения.
  virtual double STDMETHODCALLTYPE GetLength(unsigned_long bitVector) = 0;
};

// *********************************************************************//
// Interface: IOrientedEdgeCollection
// Flags:     (16) Hidden
// GUID:      {D19B0A07-4CA6-4E77-A8DB-8AC8C7123124}
// *********************************************************************//
interface IOrientedEdgeCollection  : public IUnknown
{
public:
  // [-1] Обновить массив.
  virtual long STDMETHODCALLTYPE Refresh(void) = 0;
  // [-1] Получить количество элемент массива.
  virtual long STDMETHODCALLTYPE GetCount(void) = 0;
  // [-1] Первый элемент.
  virtual Kompas6api3d5com_tlb::IOrientedEdge* STDMETHODCALLTYPE First(void) = 0;
  // [-1] Последний элемент.
  virtual Kompas6api3d5com_tlb::IOrientedEdge* STDMETHODCALLTYPE Last(void) = 0;
  // [-1] Следующий элемент.
  virtual Kompas6api3d5com_tlb::IOrientedEdge* STDMETHODCALLTYPE Next(void) = 0;
  // [-1] Предыдущий элемент.
  virtual Kompas6api3d5com_tlb::IOrientedEdge* STDMETHODCALLTYPE Prev(void) = 0;
  // [-1] Получить элемент по индексу.
  virtual Kompas6api3d5com_tlb::IOrientedEdge* STDMETHODCALLTYPE GetByIndex(long index) = 0;
  // [-1] Получить индекс элемента массива.
  virtual unsigned_long STDMETHODCALLTYPE FindIt(Kompas6api3d5com_tlb::IOrientedEdge* entity) = 0;
};

// *********************************************************************//
// Interface: IOrientedEdge
// Flags:     (16) Hidden
// GUID:      {42AA4E40-4415-4C79-8B8C-480E5AFDB79A}
// *********************************************************************//
interface IOrientedEdge  : public IUnknown
{
public:
  // [-1] Получить интерфейс базового  ребра.
  virtual Kompas6api3d5com_tlb::IEdgeDefinition* STDMETHODCALLTYPE GetEdge(void) = 0;
  // [-1] Получить направление относительно базового ребра.
  virtual long STDMETHODCALLTYPE GetOrientation(void) = 0;
  // [-1] Получить интерфейс 3D объекта, указывающего на ребро.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetOwnerEntity(void) = 0;
  // [-1] Получить следующее ориентированное ребро.
  virtual Kompas6api3d5com_tlb::IOrientedEdge* STDMETHODCALLTYPE GetNext(void) = 0;
  // [-1] Получить направление относительно кривой.
  virtual long STDMETHODCALLTYPE GetSameSense(void) = 0;
  // [-1] Получить грань, в которой ребро входит в loop (TRUE - ориентациея плюс).
  virtual Kompas6api3d5com_tlb::IFaceDefinition* STDMETHODCALLTYPE GetAdjacentFace(long facePlus) = 0;
  // [-1] Является ли ребро прямым
  virtual long STDMETHODCALLTYPE IsStraight(void) = 0;
  // [-1] Является ли ребро швом
  virtual long STDMETHODCALLTYPE IsSeam(void) = 0;
  // [-1] Является ли ребро полюсным.
  virtual long STDMETHODCALLTYPE IsPole(void) = 0;
};

// *********************************************************************//
// Interface: IEdgeDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0321-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IEdgeDefinition  : public IUnknown
{
public:
  // [-1] Определить, прямолинейно ли ребро.
  virtual long STDMETHODCALLTYPE IsStraight(void) = 0;
  // [-1] Получить указатель на объект, породивший ребро.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetOwnerEntity(void) = 0;
  // [-1] Получить интерфейс математической кривой.
  virtual Kompas6api3d5com_tlb::ICurve3D* STDMETHODCALLTYPE GetCurve3D(void) = 0;
  // [-1] Получить грань, в которой ребро входит в loop (TRUE - ориентациея плюс).
  virtual Kompas6api3d5com_tlb::IFaceDefinition* STDMETHODCALLTYPE GetAdjacentFace(long facePlus) = 0;
  // [-1] Получить вершины начальную и конечную.
  virtual Kompas6api3d5com_tlb::IVertexDefinition* STDMETHODCALLTYPE GetVertex(long start) = 0;
  // [-1] Получить массив ребер, стыкующихся с заданным ребром в его начале - begin==TRUE, конце - begin==FALSE.
  virtual Kompas6api3d5com_tlb::IEdgeCollection* STDMETHODCALLTYPE EdgeCollection(long begin) = 0;
  // [-1] Получить массив ориентированных ребер, которые указывают на данное ребро.
  virtual Kompas6api3d5com_tlb::IOrientedEdgeCollection* STDMETHODCALLTYPE OrientedEdgeCollection(void) = 0;
  // [-1] Является ли кривая дугой окружности.
  virtual long STDMETHODCALLTYPE IsArc(void) = 0;
  // [-1] Является ли кривая окружностью.
  virtual long STDMETHODCALLTYPE IsCircle(void) = 0;
  // [-1] Является ли кривая эллипсом.
  virtual long STDMETHODCALLTYPE IsEllipse(void) = 0;
  // [-1] Является ли кривая нурбсом.
  virtual long STDMETHODCALLTYPE IsNurbs(void) = 0;
  // [-1] Получить периодичность замкнутой кривой.
  virtual long STDMETHODCALLTYPE IsPeriodic(void) = 0;
  // [-1] Получить длину ребра (ST_MIX_MM..ST_MIX_M еденицы измерения).
  virtual double STDMETHODCALLTYPE GetLength(unsigned bitVector) = 0;
  // [-1] Получить указатель на объект - ребро.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetEntity(void) = 0;
  // [-1] Получить индикатор доступности объекта.
  virtual long STDMETHODCALLTYPE IsValid(void) = 0;
  // [-1] Является ли ребро кривой эскиза.
  virtual long STDMETHODCALLTYPE GetSketchEdge(void) = 0;
};

// *********************************************************************//
// Interface: IVertexDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0320-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IVertexDefinition  : public IUnknown
{
public:
  // [-1] Получить точку.
  virtual long STDMETHODCALLTYPE GetPoint(double* x, double* y, double* z) = 0;
  // [-1] Получить указатель на объект, породивший вершину.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetOwnerEntity(void) = 0;
  // [-1] Является ли точка топологической вершиной.
  virtual long STDMETHODCALLTYPE GetTopologyVertex(void) = 0;
  // [-1] Является ли вершина свободной.
  virtual long STDMETHODCALLTYPE GetFreeVertex(void) = 0;
  // [-1] Является ли вершина точкой эскиза.
  virtual long STDMETHODCALLTYPE GetSketchVertex(void) = 0;
};

// *********************************************************************//
// Interface: IEdgeCollection
// Flags:     (16) Hidden
// GUID:      {5E93D4B9-BAAB-4FC4-ACF8-8FF78E9D1B42}
// *********************************************************************//
interface IEdgeCollection  : public IUnknown
{
public:
  // [-1] Обновить массив.
  virtual long STDMETHODCALLTYPE Refresh(void) = 0;
  // [-1] Получить количество элемент массива.
  virtual long STDMETHODCALLTYPE GetCount(void) = 0;
  // [-1] Первый элемент.
  virtual Kompas6api3d5com_tlb::IEdgeDefinition* STDMETHODCALLTYPE First(void) = 0;
  // [-1] Последний элемент.
  virtual Kompas6api3d5com_tlb::IEdgeDefinition* STDMETHODCALLTYPE Last(void) = 0;
  // [-1] Следующий элемент.
  virtual Kompas6api3d5com_tlb::IEdgeDefinition* STDMETHODCALLTYPE Next(void) = 0;
  // [-1] Предыдущий элемент.
  virtual Kompas6api3d5com_tlb::IEdgeDefinition* STDMETHODCALLTYPE Prev(void) = 0;
  // [-1] Получить элемент по индексу.
  virtual Kompas6api3d5com_tlb::IEdgeDefinition* STDMETHODCALLTYPE GetByIndex(long index) = 0;
  // [-1] Получить индекс элемента массива.
  virtual unsigned_long STDMETHODCALLTYPE FindIt(Kompas6api3d5com_tlb::IEdgeDefinition* entity) = 0;
};

// *********************************************************************//
// Interface: ITessellation
// Flags:     (16) Hidden
// GUID:      {5F12CD9D-4310-4A6B-B4B8-B1445ABB36D8}
// *********************************************************************//
interface ITessellation  : public IUnknown
{
public:
  // [-1] Получить количество триангуляционных пластин.
  virtual long STDMETHODCALLTYPE GetFacetsCount(void) = 0;
  // [-1] Получить данные триангуляционной пластины по индексу в массиве триангуляционных пластин.
  virtual long STDMETHODCALLTYPE GetFacetData(int index, Kompas6api3d5com_tlb::IFacet* facet) = 0;
  // [-1] Получить количество вершин триаангуляционной сетки.
  virtual long STDMETHODCALLTYPE GetPointsCount(void) = 0;
  // [-1] Получить вершину триаангуляционной сетки, index - индекс вершины в массиве вершин.
  virtual long STDMETHODCALLTYPE GetPoint(int index/*[in]*/, float* x/*[out]*/, float* y/*[out]*/, 
                                          float* z/*[out]*/) = 0;
  // [-1] Получить нормаль триаангуляционной сетки, index - индекс вершины в массиве вершин.
  virtual long STDMETHODCALLTYPE GetNormal(int index/*[in]*/, float* x/*[out]*/, float* y/*[out]*/, 
                                           float* z/*[out]*/) = 0;
  // [-1] Задать ограничение размера ребра для триангуляциооной пластины ( Если 0, обычная триангуляция).
  virtual long STDMETHODCALLTYPE SetFacetSize(double sag) = 0;
  // [-1] Получить ограничение размера ребра ( Если 0, обычная триангуляция).
  virtual double STDMETHODCALLTYPE GetFacetSize(void) = 0;
  // [-1] Получить интерфейс триангуляционной пластины.
  virtual Kompas6api3d5com_tlb::IFacet* STDMETHODCALLTYPE GetFacet(void) = 0;
  // [-1] Обновить триангуляцию, если изменилась геометрия.
  virtual long STDMETHODCALLTYPE Refresh(void) = 0;
  // [-1] Получить параметры вершин триангуляционных сетки.
  virtual long STDMETHODCALLTYPE GetFacetPoints(VARIANT* points/*[out]*/, VARIANT* indexes/*[out]*/) = 0;
  // [-1] Получить параметры нормалей треугольников триангуляционных сетки.
  virtual long STDMETHODCALLTYPE GetFacetNormals(VARIANT* normals/*[out]*/) = 0;
  // [-1] Получить параметрические координаты вершин триангуляционных сетки.
  virtual long STDMETHODCALLTYPE GetFacetParams(VARIANT* params/*[out]*/) = 0;
  // [-1] Задать ограничение прогиба поверхности триангуляциооной пластины ( Если 0, обычная триангуляция).
  virtual long STDMETHODCALLTYPE SetFacetSag(double sag) = 0;
  // [-1] Получить ограничение прогиба поверхности ( Если 0, обычная триангуляция).
  virtual double STDMETHODCALLTYPE GetFacetSag(void) = 0;
  // [-1] Задать ограничение углового отклонения триангуляциооной пластины ( Если 0, обычная триангуляция).
  virtual long STDMETHODCALLTYPE SetFacetAngle(double angle) = 0;
  // [-1] Получить ограничение углового отклонения поверхности ( Если 0, обычная триангуляция).
  virtual double STDMETHODCALLTYPE GetFacetAngle(void) = 0;
  // [-1] Задать необходимость заполнения параметров вершин.
  virtual long STDMETHODCALLTYPE SetNeedParams(long need) = 0;
  // [-1] Получить необходимость заполнения параметров вершин.
  virtual long STDMETHODCALLTYPE GetNeedParams(void) = 0;
};

// *********************************************************************//
// Interface: IFacet
// Flags:     (16) Hidden
// GUID:      {1EED6C22-25D4-49C6-B76A-90B768966A3B}
// *********************************************************************//
interface IFacet  : public IUnknown
{
public:
  // [-1] Получить число вершин пластины.
  virtual int STDMETHODCALLTYPE GetPointsCount(void) = 0;
  // [-1] Получить координаты vertexIndex-oй вершины, index - индекс точки в пластине.
  virtual long STDMETHODCALLTYPE GetPoint(int index/*[in]*/, float* x/*[out]*/, float* y/*[out]*/, 
                                          float* z/*[out]*/) = 0;
  // [-1] Получить координаты vertexIndex-oй нормали, index - индекс точки в пластине.
  virtual long STDMETHODCALLTYPE GetNormal(int index/*[in]*/, float* x/*[out]*/, float* y/*[out]*/, 
                                           float* z/*[out]*/) = 0;
  // [-1] Получить индекс вершины в массиве вершин триаангуляционной сетки, index - индекс вершины в пластине.
  virtual int STDMETHODCALLTYPE GetTessellationIndex(int index) = 0;
};

// *********************************************************************//
// Interface: IMassInertiaParam
// Flags:     (16) Hidden
// GUID:      {74E97440-88A5-4D29-9543-59D775BC9A13}
// *********************************************************************//
interface IMassInertiaParam  : public IUnknown
{
public:
  // [-1] Возвращает координату X центра тяжести.
  virtual double STDMETHODCALLTYPE GetXc(void) = 0;
  // [-1] Возвращает координату Y центра тяжести.
  virtual double STDMETHODCALLTYPE GetYc(void) = 0;
  // [-1] Возвращает координату Z центра тяжести.
  virtual double STDMETHODCALLTYPE GetZc(void) = 0;
  // [-1] Осевые моменты инерции относительно исходных осей координат.
  virtual double STDMETHODCALLTYPE GetLx(void) = 0;
  // [-1] Осевые моменты инерции относительно исходных осей координат.
  virtual double STDMETHODCALLTYPE GetLy(void) = 0;
  // [-1] Осевые моменты инерции относительно исходных осей координат.
  virtual double STDMETHODCALLTYPE GetLz(void) = 0;
  // [-1] Центробежные моменты инерции относительно исходных осей координат.
  virtual double STDMETHODCALLTYPE GetLxy(void) = 0;
  // [-1] Центробежные моменты инерции относительно исходных осей координат.
  virtual double STDMETHODCALLTYPE GetLxz(void) = 0;
  // [-1] Центробежные моменты инерции относительно исходных осей координат.
  virtual double STDMETHODCALLTYPE GetLyz(void) = 0;
  // [-1] Осевые моменты инерции относительно центральных осей координат.
  virtual double STDMETHODCALLTYPE GetJx(void) = 0;
  // [-1] Осевые моменты инерции относительно центральных осей координат.
  virtual double STDMETHODCALLTYPE GetJy(void) = 0;
  // [-1] Осевые моменты инерции относительно центральных осей координат.
  virtual double STDMETHODCALLTYPE GetJz(void) = 0;
  // [-1] Центробежные моменты инерции относительно центральных осей координат.
  virtual double STDMETHODCALLTYPE GetJxy(void) = 0;
  // [-1] Центробежные моменты инерции относительно центральных осей координат.
  virtual double STDMETHODCALLTYPE GetJxz(void) = 0;
  // [-1] Центробежные моменты инерции относительно центральных осей координат.
  virtual double STDMETHODCALLTYPE GetJyz(void) = 0;
  // [-1] Главные центральные моменты инерции X,Y,Z выбраны по возрастанию моментов инерции.
  virtual double STDMETHODCALLTYPE GetJx0(void) = 0;
  // [-1] Главные центральные моменты инерции.
  virtual double STDMETHODCALLTYPE GetJy0(void) = 0;
  // [-1] Главные центральные моменты инерции.
  virtual double STDMETHODCALLTYPE GetJz0(void) = 0;
  // [-1] Вектора направлений главных центральных осей инерции.
  virtual long STDMETHODCALLTYPE GetAxisX(double* x, double* y, double* z) = 0;
  // [-1] Вектора направлений главных центральных осей инерции.
  virtual long STDMETHODCALLTYPE GetAxisY(double* x, double* y, double* z) = 0;
  // [-1] Вектора направлений главных центральных осей инерции.
  virtual long STDMETHODCALLTYPE GetAxisZ(double* x, double* y, double* z) = 0;
  // [-1] Плотность.
  virtual double STDMETHODCALLTYPE GetR(void) = 0;
  // [-1] Масса.
  virtual double STDMETHODCALLTYPE GetM(void) = 0;
  // [-1] Объем.
  virtual double STDMETHODCALLTYPE GetV(void) = 0;
  // [-1] Площадь.
  virtual double STDMETHODCALLTYPE GetF(void) = 0;
  // [-1] bitVector - определяет размерность длины, размерность массы, Флаги находятся в интервале [ST_MIX_MM..ST_MIX_KG]. Пример  ( метры|кг|- ST_MIX_M|ST_MIX_KG ).
  virtual long STDMETHODCALLTYPE SetBitVectorValue(unsigned val, long setState) = 0;
};

// *********************************************************************//
// Interface: IIntersectionResult
// Flags:     (16) Hidden
// GUID:      {66CBDD80-332C-40B5-9968-DD902EBAB55D}
// *********************************************************************//
interface IIntersectionResult  : public IUnknown
{
public:
  // [-1] Получить количество пересечений.
  virtual long STDMETHODCALLTYPE GetCount(void) = 0;
  // [-1] Получить тип пересечения по индексу.
  virtual long STDMETHODCALLTYPE GetIntersectionType(long index) = 0;
};

// *********************************************************************//
// Interface: IBodyParts
// Flags:     (16) Hidden
// GUID:      {DFC4E0F1-5270-40F3-8A4F-BEA75AB5383C}
// *********************************************************************//
interface IBodyParts  : public IUnknown
{
public:
  // [-1] Запустить визуальный процесс выбора частей тела.
  virtual long STDMETHODCALLTYPE UserBodyPartsChoice(void) = 0;
  // [-1] Получить колиичество частей.
  virtual long STDMETHODCALLTYPE GetCount(void) = 0;
  // [-1] Получить признак, что все части выбраны.
  virtual long STDMETHODCALLTYPE GetAllSelected(void) = 0;
  // [-1] Установить признак, что все части выбраны.
  virtual long STDMETHODCALLTYPE SetAllSelected(long val) = 0;
  // [-1] Установить для части тела с индексом признак включения.
  virtual long STDMETHODCALLTYPE SetPartSelected(long index, long Select) = 0;
  // [-1] Получить для части тела с индексом признак включения.
  virtual long STDMETHODCALLTYPE GetPartSelected(long index) = 0;
  // [-1] Включить часть тела по умолчанию(максимальную).
  virtual long STDMETHODCALLTYPE SetGreatPartsSelected(void) = 0;
};

// *********************************************************************//
// Interface: IPlacement
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0310-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IPlacement  : public IUnknown
{
public:
  // [-1] Получить координаты начала локальной системы координат.
  virtual long STDMETHODCALLTYPE GetOrigin(double* x/*[out]*/, double* y/*[out]*/, 
                                           double* z/*[out]*/) = 0;
  // [-1] Установить координаты начала локальной системы координат.
  virtual long STDMETHODCALLTYPE SetOrigin(double x, double y, double z) = 0;
  // [-1] Получить компоненты вектора направления оси OX, OY или OZ локальной системы координат.
  virtual long STDMETHODCALLTYPE GetAxis(double* x/*[out]*/, double* y/*[out]*/, double* z/*[out]*/, 
                                         long type/*[in]*/) = 0;
  // [-1] Установить компоненты вектора направления оси OX, OY или OZ локальной системы координат.
  virtual long STDMETHODCALLTYPE SetAxis(double x, double y, double z, long type) = 0;
  // [-1] Установить локальную систему координат.
  virtual long STDMETHODCALLTYPE SetPlacement(Kompas6api3d5com_tlb::IPlacement* p) = 0;
  // [-1] Установить  оси X и Y.
  virtual long STDMETHODCALLTYPE SetAxes(double Xx, double Xy, double Xz, double Yx, double Yy, 
                                         double Yz) = 0;
  // [-1] Проекция точки на полоскость xy.
  virtual long STDMETHODCALLTYPE PointProjection(double XIn/*[in]*/, double YIn/*[in]*/, 
                                                 double ZIn/*[in]*/, double* XOut/*[out]*/, 
                                                 double* YOut/*[out]*/) = 0;
  // [-1] Получить пространственную точку по точке на полоскости xy.
  virtual long STDMETHODCALLTYPE PointOn(double XIn/*[in]*/, double YIn/*[in]*/, 
                                         double* XOut/*[out]*/, double* YOut/*[out]*/, 
                                         double* ZOut/*[out]*/) = 0;
  // [-1] Получить вектор для указанной оси.
  virtual long STDMETHODCALLTYPE GetVector(long type/*[in]*/, double* x/*[out]*/, double* y/*[out]*/, 
                                           double* z/*[out]*/) = 0;
  // [-1] Задать вектор для указанной оси.
  virtual long STDMETHODCALLTYPE SetVector(long type, double x, double y, double z) = 0;
  // [-1] Установить систему координат по матрице. SAFEARRAY double (VT_ARRAY | VT_R8).
  virtual long STDMETHODCALLTYPE InitByMatrix3D(VARIANT mtr) = 0;
  // [-1] Получить матрицу системы координат в виде массива. SAFEARRAY double (VT_ARRAY | VT_R8).
  virtual long STDMETHODCALLTYPE GetMatrix3D(VARIANT* Result/*[out]*/) = 0;
  // [-1] Повернуть систему координат на угол вокруг оси.
  virtual long STDMETHODCALLTYPE Rotate(double X0/*[in]*/, double Y0/*[in]*/, double Z0/*[in]*/, 
                                        double AxisZX/*[in]*/, double AxisZXY/*[in]*/, 
                                        double AxisZZ/*[in]*/, double angle/*[in]*/) = 0;
};

// *********************************************************************//
// Interface: IMeasurer
// Flags:     (16) Hidden
// GUID:      {AC171655-ED3F-4F7A-A625-44083941AF85}
// *********************************************************************//
interface IMeasurer  : public IUnknown
{
public:
  // [-1] Задать первый объект.
  virtual long STDMETHODCALLTYPE SetObject1(Kompas6api3d5com_tlb::IEntity* obj) = 0;
  // [-1] Задать второй объект.
  virtual long STDMETHODCALLTYPE SetObject2(Kompas6api3d5com_tlb::IEntity* obj) = 0;
  // [-1] Получить первый объект.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetObject1(void) = 0;
  // [-1] Получить второй объект.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetObject2(void) = 0;
  // [-1] Определить размерность (ST_MIX_MM..ST_MIX_M еденицы измерения).
  virtual long STDMETHODCALLTYPE SetUnit(unsigned_long bitVector) = 0;
  // [-1] Получить размерность (ST_MIX_MM..ST_MIX_M еденицы измерения).
  virtual long STDMETHODCALLTYPE GetUnit(void) = 0;
  // [-1] TRUE - вычислять за пределами первого объекта.
  virtual long STDMETHODCALLTYPE SetExtendObject1(long ext) = 0;
  // [-1] TRUE - вычислять за пределами второго объекта.
  virtual long STDMETHODCALLTYPE SetExtendObject2(long ext) = 0;
  // [-1] TRUE - вычислять за пределами первого объекта.
  virtual long STDMETHODCALLTYPE GetExtendObject1(void) = 0;
  // [-1] TRUE - вычислять за пределами второго объекта.
  virtual long STDMETHODCALLTYPE GetExtendObject2(void) = 0;
  // [-1] Вычислять.
  virtual long STDMETHODCALLTYPE Calc(void) = 0;
  // [-1] TRUE - для данных объектов угол имеет смысл.
  virtual long STDMETHODCALLTYPE IsAngleValid(void) = 0;
  // [-1] Получить угол между объектами.
  virtual double STDMETHODCALLTYPE GetAngle(void) = 0;
  // [-1] Получить расстояние.
  virtual double STDMETHODCALLTYPE GetDistance(void) = 0;
  // [-1] Получить ближайшую точку на объекте или на продолжении объекта.
  virtual long STDMETHODCALLTYPE GetPoint1(double* x, double* y, double* z) = 0;
  // [-1] Получить ближайшую точку на объекте или на продолжении объекта.
  virtual long STDMETHODCALLTYPE GetPoint2(double* x, double* y, double* z) = 0;
  // [-1] Получить максимальное расстояние.
  virtual double STDMETHODCALLTYPE GetMaxDistance(void) = 0;
  // [-1] Получить расстояние по нормали( межосевое или расстояние между гранями).
  virtual double STDMETHODCALLTYPE GetNormalDistance(void) = 0;
  // [-1] Получить первую точку отрезка максимального расстояния.
  virtual long STDMETHODCALLTYPE GetMaxPoint1(double* x, double* y, double* z) = 0;
  // [-1] Получить вторую точку отрезка максимального расстояния.
  virtual long STDMETHODCALLTYPE GetMaxPoint2(double* x, double* y, double* z) = 0;
  // [-1] Получить первую точку отрезка расстояния по нормали.
  virtual long STDMETHODCALLTYPE GetNormalPoint1(double* x, double* y, double* z) = 0;
  // [-1] Получить вторую точку отрезка расстояния по нормали.
  virtual long STDMETHODCALLTYPE GetNormalPoint2(double* x, double* y, double* z) = 0;
  // [-1] Получить результат измерения.
  virtual long STDMETHODCALLTYPE GetMeasureResult(void) = 0;
  // [-1] Получить минимальное расстояние.
  virtual double STDMETHODCALLTYPE GetMinDistance(void) = 0;
  // [-1] Получить первую точку отрезка минимального расстояния.
  virtual long STDMETHODCALLTYPE GetMinPoint1(double* x, double* y, double* z) = 0;
  // [-1] Получить вторую точку отрезка минимального расстояния.
  virtual long STDMETHODCALLTYPE GetMinPoint2(double* x, double* y, double* z) = 0;
};

// *********************************************************************//
// Interface: IObject3DNotifyResult
// Flags:     (16) Hidden
// GUID:      {6B04A0E4-837A-4151-8E5A-836517F39EAE}
// *********************************************************************//
interface IObject3DNotifyResult  : public IUnknown
{
public:
  // [-1] Тип события.
  virtual long STDMETHODCALLTYPE GetNotifyType(void) = 0;
  // [-1] Получить массив объектов.
  virtual LPUNKNOWN STDMETHODCALLTYPE GetFeatureCollection(void) = 0;
  // [-1] Получить исходную локальную систему координат.
  virtual LPUNKNOWN STDMETHODCALLTYPE GetPlacement(void) = 0;
  // [-1] Тип процесса.
  virtual long STDMETHODCALLTYPE GetProcessType(void) = 0;
  // [-1] Признак работы команды Undo.
  virtual long STDMETHODCALLTYPE IsUndoMode(void) = 0;
  // [-1] Признак работы команды Redo.
  virtual long STDMETHODCALLTYPE IsRedoMode(void) = 0;
};

// *********************************************************************//
// Interface: IPartCollection
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0317-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IPartCollection  : public IUnknown
{
public:
  // [-1] Обновить массив компонентов сборки.
  virtual long STDMETHODCALLTYPE Refresh(void) = 0;
  // [-1] Получить количество элементов массива компонентов сборки.
  virtual long STDMETHODCALLTYPE GetCount(void) = 0;
  // [-1] Получить указатель на интерфейс первого компонента.
  virtual Kompas6api3d5com_tlb::IPart* STDMETHODCALLTYPE First(void) = 0;
  // [-1] Получить указатель на интерфейс последнего компонента.
  virtual Kompas6api3d5com_tlb::IPart* STDMETHODCALLTYPE Last(void) = 0;
  // [-1] Получить указатель на интерфейс следующего компонента.
  virtual Kompas6api3d5com_tlb::IPart* STDMETHODCALLTYPE Next(void) = 0;
  // [-1] Получить указатель на интерфейс предыдущего компонента.
  virtual Kompas6api3d5com_tlb::IPart* STDMETHODCALLTYPE Prev(void) = 0;
  // [-1] Получить указатель на интерфейс компонента по имени.
  virtual Kompas6api3d5com_tlb::IPart* STDMETHODCALLTYPE GetByName(LPWSTR name, long testFullName, 
                                                                   long testIgnoreCase) = 0;
  // [-1] Получить указатель на интерфейс компонента по индексу.
  virtual Kompas6api3d5com_tlb::IPart* STDMETHODCALLTYPE GetByIndex(long index) = 0;
  // [-1] Добавить компонент в массив.
  virtual long STDMETHODCALLTYPE Add(Kompas6api3d5com_tlb::IPart* entity) = 0;
  // [-1] Добавить в массив компонент с заданным индексом.
  virtual long STDMETHODCALLTYPE AddAt(Kompas6api3d5com_tlb::IPart* entity, long index) = 0;
  // [-1] Добавить в массив компонент перед указанным компонентом.
  virtual long STDMETHODCALLTYPE AddBefore(Kompas6api3d5com_tlb::IPart* entity, 
                                           Kompas6api3d5com_tlb::IPart* base) = 0;
  // [-1] Отсоединить от массива компонент с указанным индексом.
  virtual long STDMETHODCALLTYPE DetachByIndex(long index) = 0;
  // [-1] Отсоединить компонент от массива.
  virtual long STDMETHODCALLTYPE DetachByBody(Kompas6api3d5com_tlb::IPart* entity) = 0;
  // [-1] Очистить массив.
  virtual long STDMETHODCALLTYPE Clear(void) = 0;
  // [-1] Установить компонент в массиве по индексу.
  virtual long STDMETHODCALLTYPE SetByIndex(Kompas6api3d5com_tlb::IPart* entity, long index) = 0;
  // [-1] Получить индекс элемента массива.
  virtual unsigned_long STDMETHODCALLTYPE FindIt(Kompas6api3d5com_tlb::IPart* entity) = 0;
};

// *********************************************************************//
// Interface: IRequestInfo
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0313-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IRequestInfo  : public IUnknown
{
public:
  // [-1] Получить строка-подсказка процесса.
  virtual LPWSTR STDMETHODCALLTYPE GetPrompt(void) = 0;
  // [-1] Установить строка-подсказка процесса.
  virtual long STDMETHODCALLTYPE SetPrompt(LPWSTR prompt) = 0;
  // [-1] Получить указатель на интерфейс локальной системы координат.
  virtual Kompas6api3d5com_tlb::IPlacement* STDMETHODCALLTYPE GetPlacement(void) = 0;
  // [-1] Получить указатель на интерфейс массива объектов, указанных в процессе.
  virtual Kompas6api3d5com_tlb::IEntityCollection* STDMETHODCALLTYPE GetEntityCollection(void) = 0;
  // [-1] Получить имя (в Automation) или адрес (в COM) функции обратной связи для фильтрации объектов.
  virtual void* STDMETHODCALLTYPE GetFilterCallBack(void) = 0;
  // [-1] Установить имя (в Automation) или адрес (в COM) функции обратной связи для фильтрации объектов.
  virtual long STDMETHODCALLTYPE SetFilterCallBack(void* callBack) = 0;
  // [-1] Получить имя (в Automation) или адрес (в COM) функции обратной связи процесса.
  virtual void* STDMETHODCALLTYPE GetCallBack(void) = 0;
  // [-1] Установить имя (в Automation) или адрес (в COM) функции обратной связи процесса.
  virtual long STDMETHODCALLTYPE SetCallBack(void* callBack) = 0;
  // [-1] Получить строку меню - если меню было задано строкой.
  virtual LPWSTR STDMETHODCALLTYPE GetCommandsString(void) = 0;
  // [-1] Установить строку меню - если меню было задано строкой.
  virtual long STDMETHODCALLTYPE SetCommandsString(LPWSTR menu) = 0;
  // [-1] Получить строку меню.
  virtual long STDMETHODCALLTYPE GetMenuId(void) = 0;
  // [-1] Установить строку меню.
  virtual long STDMETHODCALLTYPE SetMenuId(long menuId) = 0;
  // [-1] Получить номер текущей команды из командного окна.
  virtual long STDMETHODCALLTYPE GetCurrentCommand(void) = 0;
  // [-1] Получить имя курсора.
  virtual LPWSTR STDMETHODCALLTYPE GetCursorName(void) = 0;
  // [-1] Установить имя курсора.
  virtual long STDMETHODCALLTYPE SetCursorName(LPWSTR cursor) = 0;
  // [-1] Получить идентификатор курсора.
  virtual long STDMETHODCALLTYPE GetCursorId(void) = 0;
  // [-1] Установить идентификатор курсора.
  virtual long STDMETHODCALLTYPE SetCursorId(long cursorId) = 0;
  // [-1] Получить заголовок.
  virtual LPWSTR STDMETHODCALLTYPE GetTitle(void) = 0;
  // [-1] Установить заголовок.
  virtual long STDMETHODCALLTYPE SetTitle(LPWSTR title) = 0;
  // [-1] Получить указатель на интерфейс массива временных сопряжений для фантома.
  virtual Kompas6api3d5com_tlb::IMateConstraintCollection* STDMETHODCALLTYPE GetMateConstraintCollection(void) = 0;
  // [-1] Получить указатель на интерфейс фантома.
  virtual Kompas6api3d5com_tlb::IPart* STDMETHODCALLTYPE GetIPhantom(void) = 0;
  // [-1] Создать фантом.
  virtual long STDMETHODCALLTYPE CreatePhantom(void) = 0;
  // [-1] Получить указатель на интерфейс параметров процесса.
  virtual LPUNKNOWN STDMETHODCALLTYPE GetProcessParam(void) = 0;
  // [-1] Установить указатель на интерфейс параметров процесса.
  virtual long STDMETHODCALLTYPE SetProcessParam(LPUNKNOWN param) = 0;
  // [-1] Получить интерфейс на объект дерева в функции обратной связи для процесса UserGetPlacementAndEntity).
  virtual Kompas6api3d5com_tlb::IFeature* STDMETHODCALLTYPE GetCallBackFeature(void) = 0;
  // [-1] Режим динамической фильтрации (TRUE - включен).
  virtual long STDMETHODCALLTYPE GetDynamicFiltering(void) = 0;
  // [-1] Режим динамической фильтрации (TRUE - включен).
  virtual long STDMETHODCALLTYPE SetDynamicFiltering(long f) = 0;
  // [-1] Установить текст курсора.
  virtual long STDMETHODCALLTYPE SetCursorText(LPWSTR text) = 0;
  // [-1] Показывать коммандное окно.
  virtual long STDMETHODCALLTYPE GetShowCommandWindow(void) = 0;
  // [-1] Показывать коммандное окно.
  virtual long STDMETHODCALLTYPE SetShowCommandWindow(long f) = 0;
  // [-1] Получить объект редактируемый в подпроцессе.
  virtual LPUNKNOWN STDMETHODCALLTYPE GetTakeProcessObject(void) = 0;
  // [-1] Установить объект для редактирования в подпроцессе.
  virtual long STDMETHODCALLTYPE SetTakeProcessObject(LPUNKNOWN takeObject) = 0;
  // [-1] Получить имя (в Automation) или адрес (в COM) функции обратной связи подчиненного процесса.
  virtual void* STDMETHODCALLTYPE GetTakeObjectCallBack(void) = 0;
  // [-1] Установить имя (в Automation) или адрес (в COM) функции обратной связи подчиненного процесса.
  virtual long STDMETHODCALLTYPE SetTakeObjectCallBack(void* callBack) = 0;
  // [-1] Режим использования прямоугольной рамки для выделения объектов.
  virtual long STDMETHODCALLTYPE GetSelectionBandMode(void) = 0;
  // [-1] Режим использования прямоугольной рамки для выделения объектов.
  virtual long STDMETHODCALLTYPE SetSelectionBandMode(long f) = 0;
  // [-1] Получить имя (в Automation) или адрес (в COM) функции обратной связи для обработки объектов, пришедшие при селектировании рамкой.
  virtual void* STDMETHODCALLTYPE GetProcessingGroupObjectsCallBack(void) = 0;
  // [-1] Получить имя (в Automation) или адрес (в COM) функции обратной связи для обработки объектов, пришедшие при селектировании рамкой.
  virtual long STDMETHODCALLTYPE SetProcessingGroupObjectsCallBack(void* callBack) = 0;
  // [-1] Способ фильтрации 3D объектов в процессе.
  virtual long STDMETHODCALLTYPE SetObjectsFilter3D(long filterType, long newVal) = 0;
  // [-1] Способ фильтрации 3D объектов в процессе.
  virtual long STDMETHODCALLTYPE GetObjectsFilter3D(long filterType) = 0;
};

// *********************************************************************//
// Interface: IMateConstraintCollection
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0304-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IMateConstraintCollection  : public IUnknown
{
public:
  // [-1] Получить количество элементов в массиве сопряжений.
  virtual long STDMETHODCALLTYPE GetCount(void) = 0;
  // [-1] Получить указатель на интерфейс первого объекта в массиве сопряжений.
  virtual Kompas6api3d5com_tlb::IMateConstraint* STDMETHODCALLTYPE First(void) = 0;
  // [-1] Получить указатель на интерфейс последнего объекта в массиве сопряжений.
  virtual Kompas6api3d5com_tlb::IMateConstraint* STDMETHODCALLTYPE Last(void) = 0;
  // [-1] Получить указатель на интерфейс последнего объекта в массиве сопряжений.
  virtual Kompas6api3d5com_tlb::IMateConstraint* STDMETHODCALLTYPE Next(void) = 0;
  // [-1] Получить указатель на интерфейс предыдущего элемента массива.
  virtual Kompas6api3d5com_tlb::IMateConstraint* STDMETHODCALLTYPE Prev(void) = 0;
  // [-1] Получить указатель на интерфейс элемента массива по индексу.
  virtual Kompas6api3d5com_tlb::IMateConstraint* STDMETHODCALLTYPE GetByIndex(long index) = 0;
  // [-1] Добавить компонент в массив.
  virtual long STDMETHODCALLTYPE AddMateConstraint(Kompas6api3d5com_tlb::IMateConstraint* mate) = 0;
  // [-1] Удалить компонент в массив.
  virtual long STDMETHODCALLTYPE RemoveMateConstraint(Kompas6api3d5com_tlb::IMateConstraint* mate) = 0;
  // [-1] Очистить массив.
  virtual long STDMETHODCALLTYPE Clear(void) = 0;
  // [-1] Обновить массив.
  virtual long STDMETHODCALLTYPE Refresh(void) = 0;
  // [-1] Получить индекс элемента массива.
  virtual unsigned_long STDMETHODCALLTYPE FindIt(Kompas6api3d5com_tlb::IMateConstraint* mate) = 0;
  // [-1] Сформировать SAFEARRAY параметров сопряжений по объекту.
  virtual long STDMETHODCALLTYPE GetSafeArrayByObj(LPUNKNOWN obj/*[in]*/, VARIANT* pArray/*[out]*/) = 0;
};

// *********************************************************************//
// Interface: IMateConstraint
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0314-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IMateConstraint  : public IUnknown
{
public:
  // [-1] Установить тип сопряжения.
  virtual long STDMETHODCALLTYPE SetConstraintType(short type) = 0;
  // [-1] Получить тип сопряжения.
  virtual short STDMETHODCALLTYPE GetConstraintType(void) = 0;
  // [-1] Установить указатель на интерфейс объекта для сопряжения по номеру 1 или 2.
  virtual long STDMETHODCALLTYPE SetBaseObj(short number, Kompas6api3d5com_tlb::IEntity* obj) = 0;
  // [-1] Получить указатель на интерфейс объекта для сопряжения по номеру  1 или 2.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetBaseObj(short number) = 0;
  // [-1] Установить направление, 1 - объекты однонаправленные, 0 - не учитывать, -1 разнонаправленные.
  virtual long STDMETHODCALLTYPE SetDirection(short direction) = 0;
  // [-1] Получить направление, 1 - объекты однонаправленные, 0 - не учитывать, -1 разнонаправленные.
  virtual short STDMETHODCALLTYPE GetDirection(void) = 0;
  // [-1] Установить фиксацию 0 - не нужно, 1 - фиксировать деталь obj1, 2 - фиксировать деталь obj2.
  virtual long STDMETHODCALLTYPE SetFixed(short direction) = 0;
  // [-1] Получить фиксацию 0 - не нужно, 1 - фиксировать деталь obj1, 2 - фиксировать деталь obj2.
  virtual short STDMETHODCALLTYPE GetFixed(void) = 0;
  // [-1] Установить параметр для ограничений - расстояние между объектами.
  virtual long STDMETHODCALLTYPE SetDistance(double distance) = 0;
  // [-1] Получить параметр для ограничений - расстояние между объектами.
  virtual double STDMETHODCALLTYPE GetDistance(void) = 0;
  // [-1] Создание сопряжения в модели.
  virtual long STDMETHODCALLTYPE Create(void) = 0;
  // [-1] Получить объект дерева, связанный с данным объектом.
  virtual Kompas6api3d5com_tlb::IFeature* STDMETHODCALLTYPE GetFeature(void) = 0;
  // [-1] Получить параметры для математических обектов учавствующих в сопряжении по номеру 1 или 2.
  virtual long STDMETHODCALLTYPE GetEntityParams(short number/*[in]*/, VARIANT* params/*[out]*/) = 0;
};

// *********************************************************************//
// Interface: ISpecification3D
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0315-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface ISpecification3D  : public IUnknown
{
public:
  // [-1] Добавить или изменить трехмерный компонент (деталь или подсборку) в объекте спецификации.
  virtual long STDMETHODCALLTYPE SpcIncludePart(Kompas6api3d5com_tlb::IPart* part, long fillTexts) = 0;
  // [-1] Получить указатель на объект спецификации, подключенный к трехмерному компоненту (детали или подсборке) с ограничениями по номеру раздела и типу атрибута.
  virtual long STDMETHODCALLTYPE GetSpcObjForGeomWithLimit(LPWSTR nameLib, long numb, 
                                                           Kompas6api3d5com_tlb::IPart* part, 
                                                           short First, short section, 
                                                           double attrTypeNumb) = 0;
  // [-1] Получить указатель на 3D геометрию (деталь или подсборку) подключенную к объекту спецификации.
  virtual Kompas6api3d5com_tlb::IPart* STDMETHODCALLTYPE D3GetSpcObjGeometry(long spcObj) = 0;
};

// *********************************************************************//
// Interface: IRasterFormatParam
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0318-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IRasterFormatParam  : public IUnknown
{
public:
  // [-1] Получить формат растра.
  virtual short STDMETHODCALLTYPE GetFormat(void) = 0;
  // [-1] Установить формат растра.
  virtual long STDMETHODCALLTYPE SetFormat(short f) = 0;
  // [-1] Получить цветность растра.
  virtual short STDMETHODCALLTYPE GetColorBPP(void) = 0;
  // [-1] Установить цветность растра.
  virtual long STDMETHODCALLTYPE SetColorBPP(short f) = 0;
  // [-1] Получить признак сохранения в оттенках серого.
  virtual long STDMETHODCALLTYPE GetGreyScale(void) = 0;
  // [-1] Установить признак сохранения в оттенках серого.
  virtual long STDMETHODCALLTYPE SetGreyScale(long f) = 0;
  // [-1] Получить разрешение растра.
  virtual int STDMETHODCALLTYPE GetExtResolution(void) = 0;
  // [-1] Установить разрешение растра.
  virtual long STDMETHODCALLTYPE SetExtResolution(int f) = 0;
  // [-1] Получить масштаб.
  virtual double STDMETHODCALLTYPE GetExtScale(void) = 0;
  // [-1] Установить масштаб.
  virtual long STDMETHODCALLTYPE SetExtScale(double f) = 0;
  // [-1] Получить цвет вывода объектов.
  virtual short STDMETHODCALLTYPE GetColorType(void) = 0;
  // [-1] Установить цвет вывода объектов.
  virtual long STDMETHODCALLTYPE SetColorType(short f) = 0;
  // [-1] Получить признак вывода всех линий тонкими.
  virtual long STDMETHODCALLTYPE GetOnlyThinLine(void) = 0;
  // [-1] Установить признак вывода всех линий тонкими.
  virtual long STDMETHODCALLTYPE SetOnlyThinLine(long f) = 0;
  // [-1] Получить список диапазонов выводимых страниц.
  virtual LPWSTR STDMETHODCALLTYPE GetPages(void) = 0;
  // [-1] Установить список диапазонов выводимых страниц.
  virtual long STDMETHODCALLTYPE SetPages(LPWSTR p) = 0;
  // [-1] Получить признак выбора стороны страниц.
  virtual short STDMETHODCALLTYPE GetRangeIndex(void) = 0;
  // [-1] Установить признак выбора стороны страниц.
  virtual long STDMETHODCALLTYPE SetRangeIndex(short f) = 0;
  // [-1] Получить признак сохранения всех листов в одном файле.
  virtual long STDMETHODCALLTYPE GetMultiPageOutput(void) = 0;
  // [-1] Установить признак сохранения всех листов в одном файле.
  virtual long STDMETHODCALLTYPE SetMultiPageOutput(long f) = 0;
  // [-1] Инициализировать параметры.
  virtual long STDMETHODCALLTYPE Init(void) = 0;
  // [-1] Cохранить отображение рабочей области.
  virtual long STDMETHODCALLTYPE GetSaveWorkArea(void) = 0;
  // [-1] Cохранить отображение рабочей области.
  virtual long STDMETHODCALLTYPE SetSaveWorkArea(long f) = 0;
};

// *********************************************************************//
// Interface: IAdditionFormatParam
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0319-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IAdditionFormatParam  : public IUnknown
{
public:
  // [-1] Получить формат файла для записи модели. D3FormatConvType.
  virtual short STDMETHODCALLTYPE GetFormat(void) = 0;
  // [-1] Установить формат файла для записи модели. D3FormatConvType.
  virtual long STDMETHODCALLTYPE SetFormat(short f) = 0;
  // [-1] Получить признак, определяющий тип файла (двоичный или текстовый).
  virtual long STDMETHODCALLTYPE GetFormatBinary(void) = 0;
  // [-1] Установить признак, определяющий тип файла (двоичный или текстовый).
  virtual long STDMETHODCALLTYPE SetFormatBinary(long direction) = 0;
  // [-1] Получить признак, определяющий, включать ли топологию модели при экспорте.
  virtual long STDMETHODCALLTYPE GetTopolgyIncluded(void) = 0;
  // [-1] Установить признак, определяющий, включать ли топологию модели при экспорте.
  virtual long STDMETHODCALLTYPE SetTopolgyIncluded(long direction) = 0;
  // [-1] Инициализировать параметры.
  virtual long STDMETHODCALLTYPE Init(void) = 0;
  // [-1] Получить признак, чтениязаписи объектов модели. option - ksD3ConverterOptionsEnum
  virtual long STDMETHODCALLTYPE GetObjectsOptions(long option) = 0;
  // [-1] Получить признак, чтениязаписи объектов модели. option - ksD3ConverterOptionsEnum
  virtual long STDMETHODCALLTYPE SetObjectsOptions(long option, long Set_) = 0;
  // [-1] Получить признак, чтениязаписи текстов. option - ksTextExportFormEnum
  virtual long STDMETHODCALLTYPE GetTextExportForm(void) = 0;
  // [-1] Получить признак, чтениязаписи текстов. option - ksTextExportFormEnum
  virtual long STDMETHODCALLTYPE SetTextExportForm(long Set_) = 0;
  // [-1] TRUE-создавать вставки как локальные. FALSE-Вставки сохранять в отдельных файлах.
  virtual long STDMETHODCALLTYPE GetCreateLocalComponents(void) = 0;
  // [-1] TRUE-создавать вставки как локальные. FALSE-Вставки сохранять в отдельных файлах.
  virtual long STDMETHODCALLTYPE SetCreateLocalComponents(long Set_) = 0;
  // [-1] ЛСК, относительно которой позиционирована модель.
  virtual Kompas6api3d5com_tlb::IPlacement* STDMETHODCALLTYPE GetPlacement(void) = 0;
  // [-1] ЛСК, относительно которой позиционирована модель.
  virtual long STDMETHODCALLTYPE SetPlacement(Kompas6api3d5com_tlb::IPlacement* p) = 0;
  // [-1] Способ вычисления приращения параметра при движении по объекту. ksStepTypeEnum
  virtual long STDMETHODCALLTYPE GetStepType(void) = 0;
  // [-1] Способ вычисления приращения параметра при движении по объекту. ksStepTypeEnum
  virtual long STDMETHODCALLTYPE SetStepType(long Set_) = 0;
  // [-1] Максимально допустимый прогиб кривой или поверхности в соседних точках на расстоянии шага.
  virtual double STDMETHODCALLTYPE GetStep(void) = 0;
  // [-1] Максимально допустимый прогиб кривой или поверхности в соседних точках на расстоянии шага.
  virtual long STDMETHODCALLTYPE SetStep(double Set_) = 0;
  // [-1] Максимально допустимое угловое отклонение касательных кривой или нормалей поверхности в соседних точках на расстоянии шага.
  virtual double STDMETHODCALLTYPE GetAngle(void) = 0;
  // [-1] Максимально допустимое угловое отклонение касательных кривой или нормалей поверхности в соседних точках на расстоянии шага.
  virtual long STDMETHODCALLTYPE SetAngle(double Set_) = 0;
  // [-1] Максимально допустимое расстояние между соседними точками на расстоянии шага.
  virtual double STDMETHODCALLTYPE GetLength(void) = 0;
  // [-1] Максимально допустимое расстояние между соседними точками на расстоянии шага.
  virtual long STDMETHODCALLTYPE SetLength(double Set_) = 0;
  // [-1] Максимальное количество ячеек в строке и ряду триангуляционной сетки (если 0, то не задано).
  virtual long STDMETHODCALLTYPE GetMaxTeselationCellCount(void) = 0;
  // [-1] Максимальное количество ячеек в строке и ряду триангуляционной сетки (если 0, то не задано).
  virtual long STDMETHODCALLTYPE SetMaxTeselationCellCount(long Set_) = 0;
  // [-1] Единицы измерения длины - ksLengthUnitsEnum
  virtual long STDMETHODCALLTYPE GetLengthUnits(void) = 0;
  // [-1] Единицы измерения длины - ksLengthUnitsEnum
  virtual long STDMETHODCALLTYPE SetLengthUnits(long Set_) = 0;
  // [-1] Флаг необходимости сшивки поверхностей.
  virtual long STDMETHODCALLTYPE GetStitchSurfaces(void) = 0;
  // [-1] Флаг необходимости сшивки поверхностей.
  virtual long STDMETHODCALLTYPE SetStitchSurfaces(long Set_) = 0;
  // [-1] Точность сшивки поверхностей.
  virtual double STDMETHODCALLTYPE GetStitchPrecision(void) = 0;
  // [-1] Точность сшивки поверхностей.
  virtual long STDMETHODCALLTYPE SetStitchPrecision(double Set_) = 0;
  // [-1] Автор.
  virtual LPWSTR STDMETHODCALLTYPE GetAuthor(void) = 0;
  // [-1] Автор.
  virtual long STDMETHODCALLTYPE SetAuthor(LPWSTR val) = 0;
  // [-1] Организация.
  virtual LPWSTR STDMETHODCALLTYPE GetOrganization(void) = 0;
  // [-1] Организация.
  virtual long STDMETHODCALLTYPE SetOrganization(LPWSTR val) = 0;
  // [-1] Комментарий.
  virtual LPWSTR STDMETHODCALLTYPE GetComment(void) = 0;
  // [-1] Комментарий.
  virtual long STDMETHODCALLTYPE SetComment(LPWSTR val) = 0;
  // [-1] Пороль для загрузки упрощенных вставок.
  virtual LPWSTR STDMETHODCALLTYPE GetPassword(void) = 0;
  // [-1] Пороль для загрузки упрощенных вставок.
  virtual long STDMETHODCALLTYPE SetPassword(LPWSTR val) = 0;
  // [-1] Создавать файлы компонентов.
  virtual long STDMETHODCALLTYPE GetNeedCreateComponentsFiles(void) = 0;
  // [-1] Создавать файлы компонентов.
  virtual long STDMETHODCALLTYPE SetNeedCreateComponentsFiles(long Set_) = 0;
  // [-1] Сохранить полученный документ.
  virtual long STDMETHODCALLTYPE GetSaveResultDocument(void) = 0;
  // [-1] Сохранить полученный документ.
  virtual long STDMETHODCALLTYPE SetSaveResultDocument(long Set_) = 0;
  // [-1] Выбранная конфигурация.
  virtual VARIANT STDMETHODCALLTYPE GetConfiguration(void) = 0;
  // [-1] Выбранная конфигурация.
  virtual long STDMETHODCALLTYPE SetConfiguration(VARIANT Set_) = 0;
};

// *********************************************************************//
// Interface: IViewProjectionCollection
// Flags:     (16) Hidden
// GUID:      {F6EDDAE7-AA95-4474-835E-BEB4BC25BAA8}
// *********************************************************************//
interface IViewProjectionCollection  : public IUnknown
{
public:
  // [-1] Обновить массив.
  virtual long STDMETHODCALLTYPE Refresh(void) = 0;
  // [-1] Получить количество элементов массива.
  virtual long STDMETHODCALLTYPE GetCount(void) = 0;
  // [-1] Первый элемент.
  virtual Kompas6api3d5com_tlb::IViewProjection* STDMETHODCALLTYPE First(void) = 0;
  // [-1] Последний элемент.
  virtual Kompas6api3d5com_tlb::IViewProjection* STDMETHODCALLTYPE Last(void) = 0;
  // [-1] Следующий элемент.
  virtual Kompas6api3d5com_tlb::IViewProjection* STDMETHODCALLTYPE Next(void) = 0;
  // [-1] Предыдущий элемент.
  virtual Kompas6api3d5com_tlb::IViewProjection* STDMETHODCALLTYPE Prev(void) = 0;
  // [-1] Получить элемент по индексу.
  virtual Kompas6api3d5com_tlb::IViewProjection* STDMETHODCALLTYPE GetByIndex(long index) = 0;
  // [-1] Получить элемент по индексу.
  virtual Kompas6api3d5com_tlb::IViewProjection* STDMETHODCALLTYPE GetByName(LPWSTR projName, 
                                                                             long testFullName, 
                                                                             long testIgnoreCase) = 0;
  // [-1] Получить индекс элемента массива.
  virtual long STDMETHODCALLTYPE FindIt(Kompas6api3d5com_tlb::IViewProjection* projection) = 0;
  // [-1] Добавить элемент в конец массива.
  virtual long STDMETHODCALLTYPE Add(Kompas6api3d5com_tlb::IViewProjection* projection) = 0;
  // [-1] Отсоединить элемент по индексу.
  virtual long STDMETHODCALLTYPE DetachByIndex(long index) = 0;
  // [-1] Отсоединить элемент.
  virtual long STDMETHODCALLTYPE DetachByBody(Kompas6api3d5com_tlb::IViewProjection* projection) = 0;
  // [-1] Отсоединить элемент по имени.
  virtual long STDMETHODCALLTYPE DetachByName(LPWSTR projName) = 0;
  // [-1] Новая проекция, в коллекцию не добавляется.
  virtual Kompas6api3d5com_tlb::IViewProjection* STDMETHODCALLTYPE NewViewProjection(void) = 0;
  // [-1] Текущая схема ориентаций модели.
  virtual long STDMETHODCALLTYPE GetViewProjectionScheme(void) = 0;
  // [-1] Текущая схема ориентаций модели.
  virtual long STDMETHODCALLTYPE SetViewProjectionScheme(long scheme) = 0;
  // [-1] Установить пользовательскую базовую ориентацию модели.
  virtual long STDMETHODCALLTYPE SetBaseUserOrientation(VARIANT* place) = 0;
  // [-1] Получить текущую пользовательскую базовую ориентацию модели.
  virtual long STDMETHODCALLTYPE GetBaseUserOrientation(VARIANT* place) = 0;
  // [-1] Добавить проекцию отображения - развертка.
  virtual Kompas6api3d5com_tlb::IViewProjection* STDMETHODCALLTYPE AddUnfoldProjection(VARIANT* place) = 0;
};

// *********************************************************************//
// Interface: IViewProjection
// Flags:     (16) Hidden
// GUID:      {737D35AF-C407-420D-9250-A2CBB416DCB9}
// *********************************************************************//
interface IViewProjection  : public IUnknown
{
public:
  // [-1] Признак является ли данная проекция текущей.
  virtual long STDMETHODCALLTYPE IsCurrent(void) = 0;
  // [-1] Установить данную проекцию отображения модели в окне текущей.
  virtual long STDMETHODCALLTYPE SetCurrent(void) = 0;
  // [-1] Получить имя проекции.
  virtual LPWSTR STDMETHODCALLTYPE GetName(void) = 0;
  // [-1] Установить имя проекции. projName - имя проекции в списке имен проекций для данного документа.
  virtual long STDMETHODCALLTYPE SetName(LPWSTR projName) = 0;
  // [-1] Получить масштаб отображения модели в окне.
  virtual double STDMETHODCALLTYPE GetScale(void) = 0;
  // [-1] Установить масштаб отображения модели в окне.
  virtual long STDMETHODCALLTYPE SetScale(double scale) = 0;
  // [-1] Получить систему координат отображения модели в окне.
  virtual Kompas6api3d5com_tlb::IPlacement* STDMETHODCALLTYPE GetPlacement(void) = 0;
  // [-1] Установить систему координат отображения модели в окне.
  virtual long STDMETHODCALLTYPE SetPlacement(Kompas6api3d5com_tlb::IPlacement* place) = 0;
  // [-1] Получить индекс пользовательской проекции.
  virtual long STDMETHODCALLTYPE GetUserProjectionIndex(void) = 0;
  // [-1] Установить систему координат отображения модели в окне по матрице.
  virtual long STDMETHODCALLTYPE SetMatrix3D(VARIANT Matrix3D) = 0;
  // [-1] Получить тип проекции.
  virtual long STDMETHODCALLTYPE GetViewProjectonType(void) = 0;
};

// *********************************************************************//
// Interface: ISelectionMng
// Flags:     (16) Hidden
// GUID:      {974E5E66-7948-401D-8DAE-C497A6BF1EBD}
// *********************************************************************//
interface ISelectionMng  : public IUnknown
{
public:
  // [-1] Селектировать объект.
  virtual long STDMETHODCALLTYPE Select(LPUNKNOWN obj) = 0;
  // [-1] Снять селектирование объекта.
  virtual long STDMETHODCALLTYPE Unselect(LPUNKNOWN obj) = 0;
  // [-1] Снять селектирование.
  virtual long STDMETHODCALLTYPE UnselectAll(void) = 0;
  // [-1] Селектирован ли обьект.
  virtual long STDMETHODCALLTYPE IsSelected(LPUNKNOWN obj) = 0;
  // [-1] Получить количество селектированных объектов.
  virtual int STDMETHODCALLTYPE GetCount(void) = 0;
  // [-1] Первый объект.
  virtual LPUNKNOWN STDMETHODCALLTYPE First(void) = 0;
  // [-1] Последний объект.
  virtual LPUNKNOWN STDMETHODCALLTYPE Last(void) = 0;
  // [-1] Следующий объект.
  virtual LPUNKNOWN STDMETHODCALLTYPE Next(void) = 0;
  // [-1] Предыдущий объект.
  virtual LPUNKNOWN STDMETHODCALLTYPE Prev(void) = 0;
  // [-1] Получить объект по индексу.
  virtual LPUNKNOWN STDMETHODCALLTYPE GetObjectByIndex(int index) = 0;
  // [-1] Получить тип объекта по индексу.
  virtual int STDMETHODCALLTYPE GetObjectType(int index) = 0;
};

// *********************************************************************//
// Interface: IChooseMng
// Flags:     (16) Hidden
// GUID:      {BB679D6E-1C5A-4B90-A559-CB37BA1E1FA7}
// *********************************************************************//
interface IChooseMng  : public IUnknown
{
public:
  // [-1] Выбрать объект.
  virtual long STDMETHODCALLTYPE Choose(LPUNKNOWN obj) = 0;
  // [-1] Снять выбор объекта.
  virtual long STDMETHODCALLTYPE UnChoose(LPUNKNOWN obj) = 0;
  // [-1] Снять выбор со всех объектов.
  virtual long STDMETHODCALLTYPE UnChooseAll(void) = 0;
  // [-1] Выбран ли обьект.
  virtual long STDMETHODCALLTYPE IsChoosen(LPUNKNOWN obj) = 0;
  // [-1] Получить количество выбранных объектов.
  virtual int STDMETHODCALLTYPE GetCount(void) = 0;
  // [-1] Первый объект.
  virtual LPUNKNOWN STDMETHODCALLTYPE First(void) = 0;
  // [-1] Последний объект.
  virtual LPUNKNOWN STDMETHODCALLTYPE Last(void) = 0;
  // [-1] Следующий объект.
  virtual LPUNKNOWN STDMETHODCALLTYPE Next(void) = 0;
  // [-1] Предыдущий объект.
  virtual LPUNKNOWN STDMETHODCALLTYPE Prev(void) = 0;
  // [-1] Получить объект по индексу.
  virtual LPUNKNOWN STDMETHODCALLTYPE GetObjectByIndex(int index) = 0;
  // [-1] Получить тип объекта по индексу.
  virtual int STDMETHODCALLTYPE GetObjectType(int index) = 0;
  // [-1] Получить тип текущего менеджера.
  virtual int STDMETHODCALLTYPE GetCurrentManagerType(void) = 0;
  // [-1] Получить тип текущего менеджера.
  virtual long STDMETHODCALLTYPE SetCurrentManagerType(int type) = 0;
  // [-1] Получить индекс менеджера по указателю на выбранный объект.
  virtual int STDMETHODCALLTYPE GetManagerIndex(LPUNKNOWN obj) = 0;
};

// *********************************************************************//
// Interface: IComponentPositioner
// Flags:     (16) Hidden
// GUID:      {6B9D0CE9-C3E6-436B-9EEE-02F439A45C02}
// *********************************************************************//
interface IComponentPositioner  : public IUnknown
{
public:
  // [-1] Установить плоскость по СК.
  virtual long STDMETHODCALLTYPE SetPlaneByPlacement(Kompas6api3d5com_tlb::IPlacement* plane) = 0;
  // [-1] Установить плоскость.
  virtual long STDMETHODCALLTYPE SetPlane(LPUNKNOWN plane) = 0;
  // [-1] Установить плоскость по точкам.
  virtual long STDMETHODCALLTYPE SetPlaneByPoints(double x1, double y1, double z1, double x2, 
                                                  double y2, double z2, double x3, double y3, 
                                                  double z3) = 0;
  // [-1] Установить точку захвата ( ручка).
  virtual long STDMETHODCALLTYPE SetDragPoint(double x, double y, double z) = 0;
  // [-1] Установить ось.
  virtual long STDMETHODCALLTYPE SetAxis(LPUNKNOWN axis) = 0;
  // [-1] Установить ось по точкам .
  virtual long STDMETHODCALLTYPE SetAxisByPoints(double x1, double y1, double z1, double x2, 
                                                 double y2, double z2) = 0;
  // [-1] Подготовиться к перемещению компонента.
  virtual long STDMETHODCALLTYPE Prepare(Kompas6api3d5com_tlb::IPart* part, long positionerType) = 0;
  // [-1] Перемещение компонента.
  virtual long STDMETHODCALLTYPE MoveComponent(double x, double y, double z) = 0;
  // [-1] Подготовиться к повороту компонента.
  virtual long STDMETHODCALLTYPE RotateComponent(double angl) = 0;
  // [-1] Завершить перемещение
  virtual long STDMETHODCALLTYPE Finish(void) = 0;
};

// *********************************************************************//
// Interface: IDocument3DNotifyResult
// Flags:     (16) Hidden
// GUID:      {06C34A3C-2634-4F82-BCE0-F3D73572958C}
// *********************************************************************//
interface IDocument3DNotifyResult  : public IUnknown
{
public:
  // [-1] Тип события.
  virtual long STDMETHODCALLTYPE GetNotifyType(void) = 0;
  // [-1] Тип объекта.
  virtual long STDMETHODCALLTYPE GetNotifyObjectType(void) = 0;
  // [-1] Объект для которого посылается событие.
  virtual LPUNKNOWN STDMETHODCALLTYPE GetNotifyObject(void) = 0;
  // [-1] Тип процесса, запрашивающего файл.
  virtual long STDMETHODCALLTYPE GetRequestFilesType(void) = 0;
};

// *********************************************************************//
// Interface: IModelLibrary
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0316-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IModelLibrary  : public IUnknown
{
public:
  // [-1] Действия с библиотекой моделей.
  virtual long STDMETHODCALLTYPE ModelLibraryOperation(LPWSTR libName, long type) = 0;
  // [-1] Выбор модели из библиотеки.
  virtual LPWSTR STDMETHODCALLTYPE ChoiceModelFromLib(LPWSTR libFile, long* type) = 0;
  // [-1] Добавить модель с указанным именем файла в указанную библиотеку моделей.
  virtual long STDMETHODCALLTYPE AddD3DocumentToLibrary(LPWSTR libName, LPWSTR fileName) = 0;
  // [-1] Проверить, открыта ли указанная библиотека моделей.
  virtual long STDMETHODCALLTYPE CheckModelLibrary(LPWSTR libName, long possibleMessage) = 0;
  // [-1] Проверить, существует ли в библиотеке указанная модель или папка.
  virtual long STDMETHODCALLTYPE ExistModelInLibrary(LPWSTR name) = 0;
};

// *********************************************************************//
// Interface: IThinParam
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0306-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IThinParam  : public IUnknown
{
public:
  // [-1] Получить признак формирования тонкой стенки элемента.
  virtual long STDMETHODCALLTYPE GetThin(void) = 0;
  // [-1] Установить признак формирования тонкой стенки элемента.
  virtual long STDMETHODCALLTYPE SetThin(long val) = 0;
  // [-1] Получить направление формирования тонкой стенки.
  virtual unsigned_char STDMETHODCALLTYPE GetThinType(void) = 0;
  // [-1] Установить направление формирования тонкой стенки.
  virtual long STDMETHODCALLTYPE SetThinType(unsigned_char val) = 0;
  // [-1] Получить толщину стенки в прямом направлении.
  virtual double STDMETHODCALLTYPE GetNormalThickness(void) = 0;
  // [-1] Установить толщину стенки в прямом направлении.
  virtual long STDMETHODCALLTYPE SetNormalThickness(double val) = 0;
  // [-1] Получить толщину стенки в обратном направлении.
  virtual double STDMETHODCALLTYPE GetReverseThickness(void) = 0;
  // [-1] Установить толщину стенки в обратном направлении.
  virtual long STDMETHODCALLTYPE SetReverseThickness(double val) = 0;
};

// *********************************************************************//
// Interface: IExtrusionParam
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0307-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IExtrusionParam  : public IUnknown
{
public:
  // [-1] Получить тип выдавливания в прямом направлении.
  virtual unsigned_char STDMETHODCALLTYPE GetTypeNormal(void) = 0;
  // [-1] Установить тип выдавливания в прямом направлении.
  virtual long STDMETHODCALLTYPE SetTypeNormal(unsigned_char val) = 0;
  // [-1] Получить глубина выдавливания в прямом направлении.
  virtual double STDMETHODCALLTYPE GetDepthNormal(void) = 0;
  // [-1] Установить глубина выдавливания в прямом направлении.
  virtual long STDMETHODCALLTYPE SetDepthNormal(double val) = 0;
  // [-1] Получить угол уклона в прямом направлении.
  virtual double STDMETHODCALLTYPE GetDraftValueNormal(void) = 0;
  // [-1] Установить угол уклона в прямом направлении.
  virtual long STDMETHODCALLTYPE SetDraftValueNormal(double val) = 0;
  // [-1] Получить признак уклона наружу в прямом направлении.
  virtual long STDMETHODCALLTYPE GetDraftOutwardNormal(void) = 0;
  // [-1] Установить признак уклона наружу в прямом направлении.
  virtual long STDMETHODCALLTYPE SetDraftOutwardNormal(long val) = 0;
  // [-1] Получить тип выдавливания в обратном направлении.
  virtual unsigned_char STDMETHODCALLTYPE GetTypeReverse(void) = 0;
  // [-1] Установить тип выдавливания в обратном направлении.
  virtual long STDMETHODCALLTYPE SetTypeReverse(unsigned_char val) = 0;
  // [-1] Получить глубина выдавливания в обратном направлении.
  virtual double STDMETHODCALLTYPE GetDepthReverse(void) = 0;
  // [-1] Установить глубина выдавливания в обратном направлении.
  virtual long STDMETHODCALLTYPE SetDepthReverse(double val) = 0;
  // [-1] Получить угол уклона в обратном направлении.
  virtual double STDMETHODCALLTYPE GetDraftValueReverse(void) = 0;
  // [-1] Установить угол уклона в обратном направлении.
  virtual long STDMETHODCALLTYPE SetDraftValueReverse(double val) = 0;
  // [-1] Получить признак уклона наружу в обратном направлении.
  virtual long STDMETHODCALLTYPE GetDraftOutwardReverse(void) = 0;
  // [-1] Установить признак уклона наружу в обратном направлении.
  virtual long STDMETHODCALLTYPE SetDraftOutwardReverse(long val) = 0;
  // [-1] Получить направление выдавливания.
  virtual long STDMETHODCALLTYPE GetDirection(void) = 0;
  // [-1] Установить направление выдавливания.
  virtual long STDMETHODCALLTYPE SetDirection(long val) = 0;
};

// *********************************************************************//
// Interface: IRotatedParam
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0308-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IRotatedParam  : public IUnknown
{
public:
  // [-1] Получить угол вращения в прямом направлении.
  virtual double STDMETHODCALLTYPE GetAngleNormal(void) = 0;
  // [-1] Установить угол вращения в прямом направлении.
  virtual long STDMETHODCALLTYPE SetAngleNormal(double val) = 0;
  // [-1] Получить угол вращения в обратном направлении.
  virtual double STDMETHODCALLTYPE GetAngleReverse(void) = 0;
  // [-1] Установить угол вращения в обратном направлении.
  virtual long STDMETHODCALLTYPE SetAngleReverse(double val) = 0;
  // [-1] Получить признак тороида.
  virtual long STDMETHODCALLTYPE GetToroidShape(void) = 0;
  // [-1] Установить признак тороида.
  virtual long STDMETHODCALLTYPE SetToroidShape(long val) = 0;
  // [-1] Получить направление вращения.
  virtual long STDMETHODCALLTYPE GetDirection(void) = 0;
  // [-1] Установить направление вращения.
  virtual long STDMETHODCALLTYPE SetDirection(long val) = 0;
};

// *********************************************************************//
// Interface: IObjectsFilter3D
// Flags:     (16) Hidden
// GUID:      {16EAD9EF-671F-4557-9954-BB070864F638}
// *********************************************************************//
interface IObjectsFilter3D  : public IUnknown
{
public:
  // [-1] Получить значение флага - Фильтровать все.
  virtual long STDMETHODCALLTYPE GetFilterAll(void) = 0;
  // [-1] Установить значение флага - Фильтровать все.
  virtual void STDMETHODCALLTYPE SetFilterAll(long all) = 0;
  // [-1] Получить значение флага - Фильтровать грани.
  virtual long STDMETHODCALLTYPE GetFilterFaces(void) = 0;
  // [-1] Установить значение флага - Фильтровать грани.
  virtual void STDMETHODCALLTYPE SetFilterFaces(long value) = 0;
  // [-1] Получить значение флага - Фильтровать ребра.
  virtual long STDMETHODCALLTYPE GetFilterEdges(void) = 0;
  // [-1] Установить значение флага - Фильтровать ребра.
  virtual void STDMETHODCALLTYPE SetFilterEdges(long value) = 0;
  // [-1] Установить значение флага -  Фильтровать вершины.
  virtual long STDMETHODCALLTYPE GetFilterVertexs(void) = 0;
  // [-1] Установить значение флага - Фильтровать вершины.
  virtual void STDMETHODCALLTYPE SetFilterVertexs(long value) = 0;
  // [-1] Установить значение флага -  Фильтровать конструктивные плоскасти.
  virtual long STDMETHODCALLTYPE GetFilterCPlanes(void) = 0;
  // [-1] Установить значение флага - Фильтровать конструктивные плоскасти.
  virtual void STDMETHODCALLTYPE SetFilterCPlanes(long value) = 0;
  // [-1] Установить значение флага -  Фильтровать конструктивные оси.
  virtual long STDMETHODCALLTYPE GetFilterCAxis(void) = 0;
  // [-1] Установить значение флага - Фильтровать конструктивные оси.
  virtual void STDMETHODCALLTYPE SetFilterCAxis(long value) = 0;
};

// *********************************************************************//
// Interface: IChooseBodies
// Flags:     (16) Hidden
// GUID:      {67B417BA-F248-4B56-AD03-C4057C7F2EEE}
// *********************************************************************//
interface IChooseBodies  : public IUnknown
{
public:
  // [-1] Установить тип действия  над телами.
  virtual long STDMETHODCALLTYPE SetChooseBodiesType(long val) = 0;
  // [-1] Получить тип действия над телами.
  virtual long STDMETHODCALLTYPE GetChooseBodiesType(void) = 0;
  // [-1] Получить массив тел.
  virtual Kompas6api3d5com_tlb::IBodyCollection* STDMETHODCALLTYPE BodyCollection(void) = 0;
};

// *********************************************************************//
// Interface: IChooseParts
// Flags:     (16) Hidden
// GUID:      {2920B89D-636E-4DCC-8E62-34D2F4B4BB00}
// *********************************************************************//
interface IChooseParts  : public IUnknown
{
public:
  // [-1] Способ определения области применения для компонентов в сборочной операции.
  virtual long STDMETHODCALLTYPE SetChoosePartsType(long val) = 0;
  // [-1] Способ определения области применения для компонентов в сборочной операции.
  virtual long STDMETHODCALLTYPE GetChoosePartsType(void) = 0;
  // [-1] Получить массив компонентов.
  virtual Kompas6api3d5com_tlb::IPartCollection* STDMETHODCALLTYPE PartCollection(void) = 0;
};

// *********************************************************************//
// Interface: ISketchDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0323-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface ISketchDefinition  : public IUnknown
{
public:
  // [-1] Установить базовую плоскость эскиза.
  virtual long STDMETHODCALLTYPE SetPlane(Kompas6api3d5com_tlb::IEntity* name) = 0;
  // [-1] Получить базовую плоскость эскиза.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetPlane(void) = 0;
  // [-1] Получить смещение системы координат эскиза относительно проекции системы координат модели на плоскость эскиза.
  virtual long STDMETHODCALLTYPE GetLocation(double* x, double* y) = 0;
  // [-1] Установить смещение системы координат эскиза относительно проекции системы координат модели на плоскость эскиза.
  virtual long STDMETHODCALLTYPE SetLocation(double x, double y) = 0;
  // [-1] Получить угол поворота эскиза относительно проекции системы координат модели на плоскость эскиза (в градусах).
  virtual double STDMETHODCALLTYPE GetAngle(void) = 0;
  // [-1] Установить угол поворота эскиза относительно проекции системы координат модели на плоскость эскиза (в градусах).
  virtual long STDMETHODCALLTYPE SetAngle(double ang) = 0;
  // [-1] Перейти в режим указания пользователем нового положения эскиза на той же плоскости (или плоской грани), где он был расположен ранее.
  virtual long STDMETHODCALLTYPE UserSetPlacement(LPWSTR prompt) = 0;
  // [-1] Войти в режим редактирования эскиза.
  virtual long STDMETHODCALLTYPE BeginEdit(void) = 0;
  // [-1] Выйти из режима редактирования эскиза.
  virtual long STDMETHODCALLTYPE EndEdit(void) = 0;
  // [-1] Получить координаты точки в плоскости эскиза.
  virtual long STDMETHODCALLTYPE GetLoftPoint(double* x, double* y) = 0;
  // [-1] Установить координаты точки в плоскости эскиза.
  virtual long STDMETHODCALLTYPE SetLoftPoint(double x, double y) = 0;
  // [-1] Добавить в эскиз проекцию объекта.
  virtual long STDMETHODCALLTYPE AddProjectionOf(Kompas6api3d5com_tlb::IEntity* entity) = 0;
  // [-1] Получить интерфейс математической поверхности.
  virtual Kompas6api3d5com_tlb::ISurface* STDMETHODCALLTYPE GetSurface(void) = 0;
  // [-1] Войти в режим редактирования эскиза: readOnly = TRUE - для чтения.
  virtual long STDMETHODCALLTYPE BeginEditEx(long readOnly) = 0;
};

// *********************************************************************//
// Interface: IThreadDefinition
// Flags:     (16) Hidden
// GUID:      {44ABB63A-E6F2-47C5-945C-5C17D0477CE0}
// *********************************************************************//
interface IThreadDefinition  : public IUnknown
{
public:
  // [-1] Номинальный диаметр резьбы.
  virtual double STDMETHODCALLTYPE GetDr(void) = 0;
  // [-1] Номинальный диаметр резьбы.
  virtual long STDMETHODCALLTYPE SetDr(double dr) = 0;
  // [-1] Длина резьбы.
  virtual double STDMETHODCALLTYPE GetLength(void) = 0;
  // [-1] Длина резьбы.
  virtual long STDMETHODCALLTYPE SetLength(double length) = 0;
  // [-1] Шаг резьбы.
  virtual double STDMETHODCALLTYPE GetP(void) = 0;
  // [-1] Шаг резьбы.
  virtual long STDMETHODCALLTYPE SetP(double p) = 0;
  // [-1] Тип резбы: TRUE - резьба внешняя.
  virtual long STDMETHODCALLTYPE GetOutside(void) = 0;
  // [-1] Автоопределение диаметра.
  virtual long STDMETHODCALLTYPE GetAutoDefinDr(void) = 0;
  // [-1] Автоопределение диаметра.
  virtual long STDMETHODCALLTYPE SetAutoDefinDr(long autoDefinDr) = 0;
  // [-1] Полная длина.
  virtual long STDMETHODCALLTYPE GetAllLength(void) = 0;
  // [-1] Полная длина.
  virtual long STDMETHODCALLTYPE SetAllLength(long allLength) = 0;
  // [-1] Направление построения резьбы.
  virtual long STDMETHODCALLTYPE GetFaceValue(void) = 0;
  // [-1] Направление построения резьбы.
  virtual long STDMETHODCALLTYPE SetFaceValue(long faceValue) = 0;
  // [-1] Получить ребро или грань, по которой строится резьба.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetBaseObject(void) = 0;
  // [-1] Установить ребро или грань, по которой строится резьба.
  virtual long STDMETHODCALLTYPE SetBaseObject(Kompas6api3d5com_tlb::IEntity* obj) = 0;
  // [-1] Получить грань, от которой строится резьба.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetFaceBegin(void) = 0;
  // [-1] Установить грань, от которой строится резьба.
  virtual long STDMETHODCALLTYPE SetFaceBegin(Kompas6api3d5com_tlb::IEntity* face) = 0;
  // [-1] Получить грань, до которой строится резьба.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetFaceEnd(void) = 0;
  // [-1] Установить грань, до которой строится резьба.
  virtual long STDMETHODCALLTYPE SetFaceEnd(Kompas6api3d5com_tlb::IEntity* face) = 0;
};

// *********************************************************************//
// Interface: IAxis2PointsDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0335-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IAxis2PointsDefinition  : public IUnknown
{
public:
  // [-1] Получить указатель на интерфейс точки с указанным номером.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetPoint(long number) = 0;
  // [-1] Установить указатель на интерфейс точки с указанным номером.
  virtual long STDMETHODCALLTYPE SetPoint(long number, Kompas6api3d5com_tlb::IEntity* val) = 0;
  // [-1] Получить интерфейс математической кривой.
  virtual Kompas6api3d5com_tlb::ICurve3D* STDMETHODCALLTYPE GetCurve3D(void) = 0;
};

// *********************************************************************//
// Interface: IAxis2PlanesDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0336-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IAxis2PlanesDefinition  : public IUnknown
{
public:
  // [-1] Получить указатель на интерфейс базовой плоскости с указанным номером.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetPlane(long number) = 0;
  // [-1] Установить указатель на интерфейс базовой плоскости с указанным номером.
  virtual long STDMETHODCALLTYPE SetPlane(long number, Kompas6api3d5com_tlb::IEntity* plane) = 0;
  // [-1] Получить интерфейс математической кривой.
  virtual Kompas6api3d5com_tlb::ICurve3D* STDMETHODCALLTYPE GetCurve3D(void) = 0;
};

// *********************************************************************//
// Interface: IAxisOperationsDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0337-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IAxisOperationsDefinition  : public IUnknown
{
public:
  // [-1] Получить базовый формообразующий элемент.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetOperation(void) = 0;
  // [-1] Установить базовый формообразующий элемент.
  virtual long STDMETHODCALLTYPE SetOperation(Kompas6api3d5com_tlb::IEntity* val) = 0;
  // [-1] Получить интерфейс математической кривой.
  virtual Kompas6api3d5com_tlb::ICurve3D* STDMETHODCALLTYPE GetCurve3D(void) = 0;
};

// *********************************************************************//
// Interface: IAxisEdgeDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0339-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IAxisEdgeDefinition  : public IUnknown
{
public:
  // [-1] Получить указатель на интерфейс базового ребра.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetEdge(void) = 0;
  // [-1] Установить указатель на интерфейс базового ребра.
  virtual long STDMETHODCALLTYPE SetEdge(Kompas6api3d5com_tlb::IEntity* val) = 0;
  // [-1] Получить интерфейс математической кривой.
  virtual Kompas6api3d5com_tlb::ICurve3D* STDMETHODCALLTYPE GetCurve3D(void) = 0;
};

// *********************************************************************//
// Interface: IPlaneOffsetDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0341-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IPlaneOffsetDefinition  : public IUnknown
{
public:
  // [-1] Получить направление смещения от базовой плоскости.
  virtual long STDMETHODCALLTYPE GetDirection(void) = 0;
  // [-1] Установить направление смещения от базовой плоскости.
  virtual long STDMETHODCALLTYPE SetDirection(long val) = 0;
  // [-1] Получить указатель на интерфейс базовой плоскости.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetPlane(void) = 0;
  // [-1] Установить указатель на интерфейс базовой плоскости.
  virtual long STDMETHODCALLTYPE SetPlane(Kompas6api3d5com_tlb::IEntity* val) = 0;
  // [-1] Получить смещение (расстояние) от базовой плоскости.
  virtual double STDMETHODCALLTYPE GetOffset(void) = 0;
  // [-1] Установить смещение (расстояние) от базовой плоскости.
  virtual long STDMETHODCALLTYPE SetOffset(double val) = 0;
  // [-1] Получить интерфейс математической поверхности.
  virtual Kompas6api3d5com_tlb::ISurface* STDMETHODCALLTYPE GetSurface(void) = 0;
};

// *********************************************************************//
// Interface: IPlane3PointsDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0342-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IPlane3PointsDefinition  : public IUnknown
{
public:
  // [-1] Получить указатель на интерфейс точки с указанным номером.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetPoint(long number) = 0;
  // [-1] Установить указатель на интерфейс точки с указанным номером.
  virtual long STDMETHODCALLTYPE SetPoint(long number, Kompas6api3d5com_tlb::IEntity* val) = 0;
  // [-1] Получить интерфейс математической поверхности.
  virtual Kompas6api3d5com_tlb::ISurface* STDMETHODCALLTYPE GetSurface(void) = 0;
};

// *********************************************************************//
// Interface: IPlaneAngleDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0343-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IPlaneAngleDefinition  : public IUnknown
{
public:
  // [-1] Получить указатель на интерфейс базовой плоскости.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetPlane(void) = 0;
  // [-1] Установить указатель на интерфейс базовой плоскости.
  virtual long STDMETHODCALLTYPE SetPlane(Kompas6api3d5com_tlb::IEntity* plane) = 0;
  // [-1] Получить указатель на интерфейс базовой прямой (оси или ребра).
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetAxis(void) = 0;
  // [-1] Установить указатель на интерфейс базовой прямой (оси или ребра).
  virtual long STDMETHODCALLTYPE SetAxis(Kompas6api3d5com_tlb::IEntity* axis) = 0;
  // [-1] Получить угол наклона плоскости относительно базовой плоскости.
  virtual double STDMETHODCALLTYPE GetAngle(void) = 0;
  // [-1] Установить угол наклона плоскости относительно базовой плоскости.
  virtual long STDMETHODCALLTYPE SetAngle(double val) = 0;
  // [-1] Получить интерфейс математической поверхности.
  virtual Kompas6api3d5com_tlb::ISurface* STDMETHODCALLTYPE GetSurface(void) = 0;
};

// *********************************************************************//
// Interface: IPlaneEdgePointDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0344-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IPlaneEdgePointDefinition  : public IUnknown
{
public:
  // [-1] Получить указатель на интерфейс ребра, через которое требуется построить плоскость.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetEdge(void) = 0;
  // [-1] Установить указатель на интерфейс ребра, через которое требуется построить плоскость.
  virtual long STDMETHODCALLTYPE SetEdge(Kompas6api3d5com_tlb::IEntity* val) = 0;
  // [-1] Получить указатель на интерфейс вершины, через которую требуется построить плоскость.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetPoint(void) = 0;
  // [-1] Установить указатель на интерфейс вершины, через которую требуется построить плоскость.
  virtual long STDMETHODCALLTYPE SetPoint(Kompas6api3d5com_tlb::IEntity* val) = 0;
  // [-1] Получить интерфейс математической поверхности.
  virtual Kompas6api3d5com_tlb::ISurface* STDMETHODCALLTYPE GetSurface(void) = 0;
};

// *********************************************************************//
// Interface: IPlaneParallelDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0345-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IPlaneParallelDefinition  : public IUnknown
{
public:
  // [-1] Установить указатель на интерфейс плоскости, параллельно которой будет проходить новая плоскость.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetPlane(void) = 0;
  // [-1] Установить указатель на интерфейс плоскости, параллельно которой будет проходить новая плоскость.
  virtual long STDMETHODCALLTYPE SetPlane(Kompas6api3d5com_tlb::IEntity* val) = 0;
  // [-1] Получить указатель на интерфейс вершины, через которую будет проходить новая плоскость.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetPoint(void) = 0;
  // [-1] Установить указатель на интерфейс вершины, через которую будет проходить новая плоскость.
  virtual long STDMETHODCALLTYPE SetPoint(Kompas6api3d5com_tlb::IEntity* val) = 0;
  // [-1] Получить интерфейс математической поверхности.
  virtual Kompas6api3d5com_tlb::ISurface* STDMETHODCALLTYPE GetSurface(void) = 0;
};

// *********************************************************************//
// Interface: IPlanePerpendicularDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0346-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IPlanePerpendicularDefinition  : public IUnknown
{
public:
  // [-1] Получить указатель на интерфейс ребра, перпендикулярно которому будет проходить новая плоскость.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetEdge(void) = 0;
  // [-1] Установить указатель на интерфейс ребра, перпендикулярно которому будет проходить новая плоскость.
  virtual long STDMETHODCALLTYPE SetEdge(Kompas6api3d5com_tlb::IEntity* val) = 0;
  // [-1] Получить указатель на интерфейс вершины, через которую будет проходить новая плоскость.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetPoint(void) = 0;
  // [-1] Установить указатель на интерфейс вершины, через которую будет проходить новая плоскость.
  virtual long STDMETHODCALLTYPE SetPoint(Kompas6api3d5com_tlb::IEntity* val) = 0;
  // [-1] Получить интерфейс математической поверхности.
  virtual Kompas6api3d5com_tlb::ISurface* STDMETHODCALLTYPE GetSurface(void) = 0;
};

// *********************************************************************//
// Interface: IPlaneNormalToSurfaceDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0347-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IPlaneNormalToSurfaceDefinition  : public IUnknown
{
public:
  // [-1] Получить указатель на интерфейс цилиндрической или конической грани, к которой требуется построить нормальную плоскость.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetFace(void) = 0;
  // [-1] Установить указатель на интерфейс цилиндрической или конической грани, к которой требуется построить нормальную плоскость.
  virtual long STDMETHODCALLTYPE SetFace(Kompas6api3d5com_tlb::IEntity* val) = 0;
  // [-1] Получить указатель на интерфейс плоского объекта, параллельно которому должна пройти новая плоскость.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetPlane(void) = 0;
  // [-1] Установить указатель на интерфейс плоского объекта, параллельно которому должна пройти новая плоскость.
  virtual long STDMETHODCALLTYPE SetPlane(Kompas6api3d5com_tlb::IEntity* val) = 0;
  // [-1] Получить угол между плоскостью и опорным плоским объектом.
  virtual double STDMETHODCALLTYPE GetAngle(void) = 0;
  // [-1] Установить угол между плоскостью и опорным плоским объектом.
  virtual long STDMETHODCALLTYPE SetAngle(double ang) = 0;
  // [-1] Получить интерфейс математической поверхности.
  virtual Kompas6api3d5com_tlb::ISurface* STDMETHODCALLTYPE GetSurface(void) = 0;
  // [-1] Автоопределение.
  virtual long STDMETHODCALLTYPE GetAutoBuilding(void) = 0;
  // [-1] Автоопределение.
  virtual long STDMETHODCALLTYPE SetAutoBuilding(long val) = 0;
};

// *********************************************************************//
// Interface: IPlaneTangentToSurfaceDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0348-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IPlaneTangentToSurfaceDefinition  : public IUnknown
{
public:
  // [-1] Получить указатель на интерфейс цилиндрической или конической грани, к которой требуется построить касательную плоскость.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetFace(void) = 0;
  // [-1] Установить указатель на интерфейс цилиндрической или конической грани, к которой требуется построить касательную плоскость.
  virtual long STDMETHODCALLTYPE SetFace(Kompas6api3d5com_tlb::IEntity* val) = 0;
  // [-1] Установить указатель на интерфейс плоского объекта, параллельно которому должна пройти новая плоскость.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetPlane(void) = 0;
  // [-1] Установить указатель на интерфейс плоского объекта, параллельно которому должна пройти новая плоскость.
  virtual long STDMETHODCALLTYPE SetPlane(Kompas6api3d5com_tlb::IEntity* val) = 0;
  // [-1] Получить изменение положения касательной плоскости относительно выбранной цилиндрической или конической грани.
  virtual short STDMETHODCALLTYPE GetChoosePlane(void) = 0;
  // [-1] Установить изменение положения касательной плоскости относительно выбранной цилиндрической или конической грани.
  virtual long STDMETHODCALLTYPE SetChoosePlane(short Choose) = 0;
  // [-1] Получить интерфейс математической поверхности.
  virtual Kompas6api3d5com_tlb::ISurface* STDMETHODCALLTYPE GetSurface(void) = 0;
  // [-1] Угол.
  virtual double STDMETHODCALLTYPE GetAngle(void) = 0;
  // [-1] Угол.
  virtual long STDMETHODCALLTYPE SetAngle(double ang) = 0;
};

// *********************************************************************//
// Interface: IPlaneLineToEdgeDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0349-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IPlaneLineToEdgeDefinition  : public IUnknown
{
public:
  // [-1] Получить указатель на интерфейс первого ребра, через которое будет проходить новая плоскость.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetEdgeFirst(void) = 0;
  // [-1] Установить указатель на интерфейс первого ребра, через которое будет проходить новая плоскость.
  virtual long STDMETHODCALLTYPE SetEdgeFirst(Kompas6api3d5com_tlb::IEntity* val) = 0;
  // [-1] Получить указатель на интерфейс второго ребра, параллельно или перпендикулярно которому будет проходить новая плоскость.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetEdgeSecond(void) = 0;
  // [-1] Установить указатель на интерфейс второго ребра, параллельно или перпендикулярно которому будет проходить новая плоскость.
  virtual long STDMETHODCALLTYPE SetEdgeSecond(Kompas6api3d5com_tlb::IEntity* val) = 0;
  // [-1] Получить ризнак положения плоскости.
  virtual long STDMETHODCALLTYPE GetParallel(void) = 0;
  // [-1] Установить ризнак положения плоскости.
  virtual long STDMETHODCALLTYPE SetParallel(long val) = 0;
  // [-1] Получить интерфейс математической поверхности.
  virtual Kompas6api3d5com_tlb::ISurface* STDMETHODCALLTYPE GetSurface(void) = 0;
};

// *********************************************************************//
// Interface: IPlaneLineToPlaneDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0350-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IPlaneLineToPlaneDefinition  : public IUnknown
{
public:
  // [-1] Получить указатель на интерфейс ребра, через которое будет проходить новая плоскость.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetEdge(void) = 0;
  // [-1] Установить указатель на интерфейс ребра, через которое будет проходить новая плоскость.
  virtual long STDMETHODCALLTYPE SetEdge(Kompas6api3d5com_tlb::IEntity* val) = 0;
  // [-1] Получить указатель на интерфейс плоского объекта, параллельно или перпендикулярно которому будет проходить новая плоскость.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetPlane(void) = 0;
  // [-1] Установить указатель на интерфейс плоского объекта, параллельно или перпендикулярно которому будет проходить новая плоскость.
  virtual long STDMETHODCALLTYPE SetPlane(Kompas6api3d5com_tlb::IEntity* val) = 0;
  // [-1] Получить признак положения плоскости.
  virtual long STDMETHODCALLTYPE GetParallel(void) = 0;
  // [-1] Установить признак положения плоскости.
  virtual long STDMETHODCALLTYPE SetParallel(long val) = 0;
  // [-1] Получить интерфейс математической поверхности.
  virtual Kompas6api3d5com_tlb::ISurface* STDMETHODCALLTYPE GetSurface(void) = 0;
};

// *********************************************************************//
// Interface: IBaseExtrusionDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0355-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IBaseExtrusionDefinition  : public IUnknown
{
public:
  // [-1] Установить указатель на интерфейс эскиза элемента.
  virtual long STDMETHODCALLTYPE SetSketch(Kompas6api3d5com_tlb::IEntity* name) = 0;
  // [-1] Получить указатель на интерфейс эскиза элемента.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetSketch(void) = 0;
  // [-1] Получить параметры выдавливания в одном направлении.
  virtual long STDMETHODCALLTYPE GetSideParam(long forward, unsigned_char* type, double* depth, 
                                              double* draftValue, long* draftOutward) = 0;
  // [-1] Установить параметры выдавливания в одном направлении.
  virtual void STDMETHODCALLTYPE SetSideParam(long forward, unsigned_char type, double depth, 
                                              double draftValue, long draftOutward) = 0;
  // [-1] Получить параметры тонкой стенки элемента.
  virtual long STDMETHODCALLTYPE GetThinParam(long* thin, unsigned_char* thinType, 
                                              double* normalThickness, double* reverseThickness) = 0;
  // [-1] Установить параметры тонкой стенки элемента.
  virtual void STDMETHODCALLTYPE SetThinParam(long thin, unsigned_char thinType, 
                                              double normalThickness, double reverseThickness) = 0;
  // [-1] Установить направление выдавливания.
  virtual long STDMETHODCALLTYPE SetDirectionType(long dirType) = 0;
  // [-1] Получить направление выдавливания.
  virtual long STDMETHODCALLTYPE GetDirectionType(void) = 0;
  // [-1] Получить указатель на интерфейс параметров тонкой стенки.
  virtual Kompas6api3d5com_tlb::IThinParam* STDMETHODCALLTYPE ThinParam(void) = 0;
  // [-1] Получить указатель на интерфейс параметров элемента выдавливания.
  virtual Kompas6api3d5com_tlb::IExtrusionParam* STDMETHODCALLTYPE ExtrusionParam(void) = 0;
  // [-1] Получить объект, задающий глубину выдавливания.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetDepthObject(long normal) = 0;
  // [-1] Установить объект, задающий глубину выдавливания.
  virtual long STDMETHODCALLTYPE SetDepthObject(long normal, Kompas6api3d5com_tlb::IEntity* obj) = 0;
  // [-1] Отказаться от установленного методом SetDepthObject объекта, задающего глубину выдавливания.
  virtual long STDMETHODCALLTYPE ResetDepthObject(long normal) = 0;
};

// *********************************************************************//
// Interface: IBossExtrusionDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0356-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IBossExtrusionDefinition  : public IUnknown
{
public:
  // [-1] Установить указатель на интерфейс эскиза элемента.
  virtual long STDMETHODCALLTYPE SetSketch(Kompas6api3d5com_tlb::IEntity* name) = 0;
  // [-1] Получить указатель на интерфейс эскиза элемента.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetSketch(void) = 0;
  // [-1] Получить параметры выдавливания в одном направлении.
  virtual long STDMETHODCALLTYPE GetSideParam(long forward, unsigned_char* type, double* depth, 
                                              double* draftValue, long* draftOutward) = 0;
  // [-1] Установить параметры выдавливания в одном направлении.
  virtual void STDMETHODCALLTYPE SetSideParam(long forward, unsigned_char type, double depth, 
                                              double depthToObj, long draftOutward) = 0;
  // [-1] Получить параметры тонкой стенки элемента.
  virtual long STDMETHODCALLTYPE GetThinParam(long* thin, unsigned_char* thinType, 
                                              double* normalThickness, double* reverseThickness) = 0;
  // [-1] Установить параметры тонкой стенки элемента.
  virtual void STDMETHODCALLTYPE SetThinParam(long thin, unsigned_char thinType, 
                                              double normalThickness, double reverseThickness) = 0;
  // [-1] Установить направление выдавливания.
  virtual long STDMETHODCALLTYPE SetDirectionType(long dirType) = 0;
  // [-1] Получить направление выдавливания.
  virtual long STDMETHODCALLTYPE GetDirectionType(void) = 0;
  // [-1] Получить указатель на интерфейс параметров тонкой стенки.
  virtual Kompas6api3d5com_tlb::IThinParam* STDMETHODCALLTYPE ThinParam(void) = 0;
  // [-1] Получить указатель на интерфейс параметров элемента выдавливания.
  virtual Kompas6api3d5com_tlb::IExtrusionParam* STDMETHODCALLTYPE ExtrusionParam(void) = 0;
  // [-1] Получить объект, задающий глубину выдавливания.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetDepthObject(long normal) = 0;
  // [-1] Установить объект, задающий глубину выдавливания.
  virtual long STDMETHODCALLTYPE SetDepthObject(long normal, Kompas6api3d5com_tlb::IEntity* obj) = 0;
  // [-1] Отказаться от установленного методом SetDepthObject объекта, задающего глубину выдавливания.
  virtual long STDMETHODCALLTYPE ResetDepthObject(long normal) = 0;
  // [-1] Получить указатель на интерфейс для работы с областью применения для тел.
  virtual Kompas6api3d5com_tlb::IChooseBodies* STDMETHODCALLTYPE ChooseBodies(void) = 0;
  // [-1] Получить указатель на интерфейс для работы с областью применения для компонентов.
  virtual Kompas6api3d5com_tlb::IChooseParts* STDMETHODCALLTYPE ChooseParts(void) = 0;
  // [-1] Область применения.
  virtual long STDMETHODCALLTYPE SetChooseType(long val) = 0;
  // [-1] Область применения.
  virtual long STDMETHODCALLTYPE GetChooseType(void) = 0;
};

// *********************************************************************//
// Interface: ICutExtrusionDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0357-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface ICutExtrusionDefinition  : public IUnknown
{
public:
  // [-1] Установить указатель на интерфейс эскиза элемента.
  virtual long STDMETHODCALLTYPE SetSketch(Kompas6api3d5com_tlb::IEntity* name) = 0;
  // [-1] Получить указатель на интерфейс эскиза элемента.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetSketch(void) = 0;
  // [-1] Получить параметры выдавливания в одном направлении.
  virtual long STDMETHODCALLTYPE GetSideParam(long forward, unsigned_char* type, double* depth, 
                                              double* draftValue, long* draftOutward) = 0;
  // [-1] Установить параметры выдавливания в одном направлении.
  virtual void STDMETHODCALLTYPE SetSideParam(long forward, unsigned_char type, double depth, 
                                              double depthToObj, long draftOutward) = 0;
  // [-1] Получить параметры тонкой стенки элемента.
  virtual long STDMETHODCALLTYPE GetThinParam(long* thin, unsigned_char* thinType, 
                                              double* normalThickness, double* reverseThickness) = 0;
  // [-1] Установить параметры тонкой стенки элемента.
  virtual void STDMETHODCALLTYPE SetThinParam(long thin, unsigned_char thinType, 
                                              double normalThickness, double reverseThickness) = 0;
  // [-1] Установить направление выдавливания.
  virtual long STDMETHODCALLTYPE SetDirectionType(long dirType) = 0;
  // [-1] Получить направление выдавливания.
  virtual long STDMETHODCALLTYPE GetDirectionType(void) = 0;
  // [-1] Получить указатель на интерфейс параметров тонкой стенки.
  virtual Kompas6api3d5com_tlb::IThinParam* STDMETHODCALLTYPE ThinParam(void) = 0;
  // [-1] Получить указатель на интерфейс параметров элемента выдавливания.
  virtual Kompas6api3d5com_tlb::IExtrusionParam* STDMETHODCALLTYPE ExtrusionParam(void) = 0;
  // [-1] Получить признак результата операции.
  virtual long STDMETHODCALLTYPE GetCut(void) = 0;
  // [-1] Установить признак результата операции.
  virtual long STDMETHODCALLTYPE SetCut(long cut) = 0;
  // [-1] Получить объект, задающий глубину выдавливания.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetDepthObject(long normal) = 0;
  // [-1] Установить объект, задающий глубину выдавливания.
  virtual long STDMETHODCALLTYPE SetDepthObject(long normal, Kompas6api3d5com_tlb::IEntity* obj) = 0;
  // [-1] Отказаться от установленного методом SetDepthObject объекта, задающего глубину выдавливания.
  virtual long STDMETHODCALLTYPE ResetDepthObject(long normal) = 0;
  // [-1] Получить указатель на интерфейс для работы с областью применения для тел.
  virtual Kompas6api3d5com_tlb::IChooseBodies* STDMETHODCALLTYPE ChooseBodies(void) = 0;
  // [-1] Получить указатель на интерфейс для работы с областью применения для компонентов.
  virtual Kompas6api3d5com_tlb::IChooseParts* STDMETHODCALLTYPE ChooseParts(void) = 0;
  // [-1] Область применения.
  virtual long STDMETHODCALLTYPE SetChooseType(long val) = 0;
  // [-1] Область применения.
  virtual long STDMETHODCALLTYPE GetChooseType(void) = 0;
};

// *********************************************************************//
// Interface: IBaseRotatedDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0358-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IBaseRotatedDefinition  : public IUnknown
{
public:
  // [-1] Установить указатель на интерфейс эскиза элемента.
  virtual long STDMETHODCALLTYPE SetSketch(Kompas6api3d5com_tlb::IEntity* name) = 0;
  // [-1] Получить указатель на интерфейс эскиза элемента.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetSketch(void) = 0;
  // [-1] Получить параметры вращения в одном направлении.
  virtual long STDMETHODCALLTYPE GetSideParam(long forward, double* angle) = 0;
  // [-1] Установить параметры вращения в одном направлении.
  virtual void STDMETHODCALLTYPE SetSideParam(long forward, double angle) = 0;
  // [-1] Получить параметры тонкой стенки элемента.
  virtual long STDMETHODCALLTYPE GetThinParam(long* thin, unsigned_char* thinType, 
                                              double* normalThickness, double* reverseThickness) = 0;
  // [-1] Установить параметры тонкой стенки элемента.
  virtual void STDMETHODCALLTYPE SetThinParam(long thin, unsigned_char thinType, 
                                              double normalThickness, double reverseThickness) = 0;
  // [-1] Установить направление вращения.
  virtual long STDMETHODCALLTYPE SetDirectionType(long dirType) = 0;
  // [-1] Получить направление вращения.
  virtual long STDMETHODCALLTYPE GetDirectionType(void) = 0;
  // [-1] Установить признак тороида.
  virtual long STDMETHODCALLTYPE SetToroidShapeType(long dirType) = 0;
  // [-1] Получить признак тороида.
  virtual long STDMETHODCALLTYPE GetToroidShapeType(void) = 0;
  // [-1] Получить указатель на интерфейс параметров тонкой стенки.
  virtual Kompas6api3d5com_tlb::IThinParam* STDMETHODCALLTYPE ThinParam(void) = 0;
  // [-1] Получить указатель на интерфейс параметров элемента вращения.
  virtual Kompas6api3d5com_tlb::IRotatedParam* STDMETHODCALLTYPE RotatedParam(void) = 0;
};

// *********************************************************************//
// Interface: IBossRotatedDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0359-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IBossRotatedDefinition  : public IUnknown
{
public:
  // [-1] Установить указатель на интерфейс эскиза элемента.
  virtual long STDMETHODCALLTYPE SetSketch(Kompas6api3d5com_tlb::IEntity* name) = 0;
  // [-1] Получить указатель на интерфейс эскиза элемента.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetSketch(void) = 0;
  // [-1] Получить параметры вращения в одном направлении.
  virtual long STDMETHODCALLTYPE GetSideParam(long forward, double* angle) = 0;
  // [-1] Установить параметры вращения в одном направлении.
  virtual void STDMETHODCALLTYPE SetSideParam(long forward, double angle) = 0;
  // [-1] Получить параметры тонкой стенки элемента.
  virtual long STDMETHODCALLTYPE GetThinParam(long* thin, unsigned_char* thinType, 
                                              double* normalThickness, double* reverseThickness) = 0;
  // [-1] Установить параметры тонкой стенки элемента.
  virtual void STDMETHODCALLTYPE SetThinParam(long thin, unsigned_char thinType, 
                                              double normalThickness, double reverseThickness) = 0;
  // [-1] Установить направление вращения.
  virtual long STDMETHODCALLTYPE SetDirectionType(long dirType) = 0;
  // [-1] Получить направление вращения.
  virtual long STDMETHODCALLTYPE GetDirectionType(void) = 0;
  // [-1] Установить признак тороида.
  virtual long STDMETHODCALLTYPE SetToroidShapeType(long dirType) = 0;
  // [-1] Получить признак тороида.
  virtual long STDMETHODCALLTYPE GetToroidShapeType(void) = 0;
  // [-1] Получить указатель на интерфейс параметров тонкой стенки.
  virtual Kompas6api3d5com_tlb::IThinParam* STDMETHODCALLTYPE ThinParam(void) = 0;
  // [-1] Получить указатель на интерфейс параметров элемента вращения.
  virtual Kompas6api3d5com_tlb::IRotatedParam* STDMETHODCALLTYPE RotatedParam(void) = 0;
  // [-1] Получить указатель на интерфейс для работы с областью применения для тел.
  virtual Kompas6api3d5com_tlb::IChooseBodies* STDMETHODCALLTYPE ChooseBodies(void) = 0;
  // [-1] Получить указатель на интерфейс для работы с областью применения для компонентов.
  virtual Kompas6api3d5com_tlb::IChooseParts* STDMETHODCALLTYPE ChooseParts(void) = 0;
  // [-1] Область применения.
  virtual long STDMETHODCALLTYPE SetChooseType(long val) = 0;
  // [-1] Область применения.
  virtual long STDMETHODCALLTYPE GetChooseType(void) = 0;
};

// *********************************************************************//
// Interface: ICutRotatedDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0360-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface ICutRotatedDefinition  : public IUnknown
{
public:
  // [-1] Установить указатель на интерфейс эскиза элемента.
  virtual long STDMETHODCALLTYPE SetSketch(Kompas6api3d5com_tlb::IEntity* name) = 0;
  // [-1] Получить указатель на интерфейс эскиза элемента.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetSketch(void) = 0;
  // [-1] Получить параметры вращения в одном направлении.
  virtual long STDMETHODCALLTYPE GetSideParam(long forward, double* angle) = 0;
  // [-1] Установить параметры вращения в одном направлении.
  virtual void STDMETHODCALLTYPE SetSideParam(long forward, double angle) = 0;
  // [-1] Получить параметры тонкой стенки элемента.
  virtual long STDMETHODCALLTYPE GetThinParam(long* thin, unsigned_char* thinType, 
                                              double* normalThickness, double* reverseThickness) = 0;
  // [-1] Установить параметры тонкой стенки элемента.
  virtual void STDMETHODCALLTYPE SetThinParam(long thin, unsigned_char thinType, 
                                              double normalThickness, double reverseThickness) = 0;
  // [-1] Установить направление вращения.
  virtual long STDMETHODCALLTYPE SetDirectionType(long dirType) = 0;
  // [-1] Получить направление вращения.
  virtual long STDMETHODCALLTYPE GetDirectionType(void) = 0;
  // [-1] Установить признак тороида.
  virtual long STDMETHODCALLTYPE SetToroidShapeType(long dirType) = 0;
  // [-1] Получить признак тороида.
  virtual long STDMETHODCALLTYPE GetToroidShapeType(void) = 0;
  // [-1] Получить указатель на интерфейс параметров тонкой стенки.
  virtual Kompas6api3d5com_tlb::IThinParam* STDMETHODCALLTYPE ThinParam(void) = 0;
  // [-1] Получить указатель на интерфейс параметров элемента вращения.
  virtual Kompas6api3d5com_tlb::IRotatedParam* STDMETHODCALLTYPE RotatedParam(void) = 0;
  // [-1] Получить признак результата операции.
  virtual long STDMETHODCALLTYPE GetCut(void) = 0;
  // [-1] Установить признак результата операции.
  virtual long STDMETHODCALLTYPE SetCut(long cut) = 0;
  // [-1] Получить указатель на интерфейс области применения.
  virtual Kompas6api3d5com_tlb::IChooseBodies* STDMETHODCALLTYPE ChooseBodies(void) = 0;
  // [-1] Получить указатель на интерфейс для работы с областью применения для компонентов.
  virtual Kompas6api3d5com_tlb::IChooseParts* STDMETHODCALLTYPE ChooseParts(void) = 0;
  // [-1] Область применения.
  virtual long STDMETHODCALLTYPE SetChooseType(long val) = 0;
  // [-1] Область применения.
  virtual long STDMETHODCALLTYPE GetChooseType(void) = 0;
};

// *********************************************************************//
// Interface: IBaseLoftDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0361-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IBaseLoftDefinition  : public IUnknown
{
public:
  // [-1] Получить параметры элемента по сечениям.
  virtual long STDMETHODCALLTYPE GetLoftParam(long* closed, long* flipVertex, long* autoPath) = 0;
  // [-1] Установить параметры операции по сечениям.
  virtual void STDMETHODCALLTYPE SetLoftParam(long closed, long flipVertex, long autoPath) = 0;
  // [-1] Получить параметры тонкой стенки элемента.
  virtual long STDMETHODCALLTYPE GetThinParam(long* thin, unsigned_char* thinType, 
                                              double* normalThickness, double* reverseThickness) = 0;
  // [-1] Установить параметры тонкой стенки элемента.
  virtual void STDMETHODCALLTYPE SetThinParam(long thin, unsigned_char thinType, 
                                              double normalThickness, double reverseThickness) = 0;
  // [-1] Получить указатель на интерфейс параметров тонкой стенки.
  virtual Kompas6api3d5com_tlb::IThinParam* STDMETHODCALLTYPE ThinParam(void) = 0;
  // [-1] Получить указатель на интерфейс массива эскизов элемента по сечениям.
  virtual Kompas6api3d5com_tlb::IEntityCollection* STDMETHODCALLTYPE Sketchs(void) = 0;
};

// *********************************************************************//
// Interface: IBossLoftDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0362-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IBossLoftDefinition  : public IUnknown
{
public:
  // [-1] Получить параметры приклеенного элемента по сечениям.
  virtual long STDMETHODCALLTYPE GetLoftParam(long* closed, long* flipVertex, long* autoPath) = 0;
  // [-1] Установить параметры приклеенного элемента по сечениям.
  virtual void STDMETHODCALLTYPE SetLoftParam(long closed, long flipVertex, long autoPath) = 0;
  // [-1] Получить параметры тонкой стенки элемента.
  virtual long STDMETHODCALLTYPE GetThinParam(long* thin, unsigned_char* thinType, 
                                              double* normalThickness, double* reverseThickness) = 0;
  // [-1] Установить параметры тонкой стенки элемента.
  virtual void STDMETHODCALLTYPE SetThinParam(long thin, unsigned_char thinType, 
                                              double normalThickness, double reverseThickness) = 0;
  // [-1] Получить указатель на интерфейс параметров тонкой стенки.
  virtual Kompas6api3d5com_tlb::IThinParam* STDMETHODCALLTYPE ThinParam(void) = 0;
  // [-1] Получить указатель на интерфейс массива эскизов элемента по сечениям.
  virtual Kompas6api3d5com_tlb::IEntityCollection* STDMETHODCALLTYPE Sketchs(void) = 0;
  // [-1] Получить указатель на интерфейс области применения.
  virtual Kompas6api3d5com_tlb::IChooseBodies* STDMETHODCALLTYPE ChooseBodies(void) = 0;
  // [-1] Получить направляющую линию. Эскиз в котором лежит кривая.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetDirectionalLine(void) = 0;
  // [-1] Установить направляющую линию. Эскиз в котором лежит кривая.
  virtual long STDMETHODCALLTYPE SetDirectionalLine(Kompas6api3d5com_tlb::IEntity* sketch) = 0;
  // [-1] Получить указатель на интерфейс для работы с областью применения для компонентов.
  virtual Kompas6api3d5com_tlb::IChooseParts* STDMETHODCALLTYPE ChooseParts(void) = 0;
  // [-1] Область применения.
  virtual long STDMETHODCALLTYPE SetChooseType(long val) = 0;
  // [-1] Область применения.
  virtual long STDMETHODCALLTYPE GetChooseType(void) = 0;
};

// *********************************************************************//
// Interface: ICutLoftDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0363-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface ICutLoftDefinition  : public IUnknown
{
public:
  // [-1] Получить параметры вырезанного элемента по сечениям.
  virtual long STDMETHODCALLTYPE GetLoftParam(long* closed, long* flipVertex, long* autoPath) = 0;
  // [-1] Установить параметры вырезанного элемента по сечениям.
  virtual void STDMETHODCALLTYPE SetLoftParam(long closed, long flipVertex, long autoPath) = 0;
  // [-1] Получить параметры тонкой стенки элемента.
  virtual long STDMETHODCALLTYPE GetThinParam(long* thin, unsigned_char* thinType, 
                                              double* normalThickness, double* reverseThickness) = 0;
  // [-1] Установить параметры тонкой стенки элемента.
  virtual void STDMETHODCALLTYPE SetThinParam(long thin, unsigned_char thinType, 
                                              double normalThickness, double reverseThickness) = 0;
  // [-1] Получить указатель на интерфейс параметров тонкой стенки.
  virtual Kompas6api3d5com_tlb::IThinParam* STDMETHODCALLTYPE ThinParam(void) = 0;
  // [-1] Получить указатель на интерфейс массива эскизов элемента по сечениям.
  virtual Kompas6api3d5com_tlb::IEntityCollection* STDMETHODCALLTYPE Sketchs(void) = 0;
  // [-1] Получить признак результата операции.
  virtual long STDMETHODCALLTYPE GetCut(void) = 0;
  // [-1] Установить признак результата операции.
  virtual long STDMETHODCALLTYPE SetCut(long cut) = 0;
  // [-1] Получить указатель на интерфейс области применения.
  virtual Kompas6api3d5com_tlb::IChooseBodies* STDMETHODCALLTYPE ChooseBodies(void) = 0;
  // [-1] Получить направляющую линию. Эскиз в котором лежит кривая.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetDirectionalLine(void) = 0;
  // [-1] Установить направляющую линию. Эскиз в котором лежит кривая.
  virtual long STDMETHODCALLTYPE SetDirectionalLine(Kompas6api3d5com_tlb::IEntity* sketch) = 0;
  // [-1] Получить указатель на интерфейс для работы с областью применения для компонентов.
  virtual Kompas6api3d5com_tlb::IChooseParts* STDMETHODCALLTYPE ChooseParts(void) = 0;
  // [-1] Область применения.
  virtual long STDMETHODCALLTYPE SetChooseType(long val) = 0;
  // [-1] Область применения.
  virtual long STDMETHODCALLTYPE GetChooseType(void) = 0;
};

// *********************************************************************//
// Interface: IBaseEvolutionDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0364-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IBaseEvolutionDefinition  : public IUnknown
{
public:
  // [-1] Установить эскиз сечения кинематического элемента.
  virtual long STDMETHODCALLTYPE SetSketch(Kompas6api3d5com_tlb::IEntity* sketch) = 0;
  // [-1] Получить указатель на интерфейс эскиза сечения кинематического элемента.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetSketch(void) = 0;
  // [-1] Получить указатель на интерфейс массива кривых, задающих траекторию движения сечения кинематического элемента.
  virtual Kompas6api3d5com_tlb::IEntityCollection* STDMETHODCALLTYPE PathPartArray(void) = 0;
  // [-1] Установить тип движения сечения по траектории.
  virtual short STDMETHODCALLTYPE GetSketchShiftType(void) = 0;
  // [-1] Получить тип движения сечения по траектории.
  virtual long STDMETHODCALLTYPE SetSketchShiftType(short s) = 0;
  // [-1] Получить параметры тонкой стенки элемента.
  virtual long STDMETHODCALLTYPE GetThinParam(long* thin, unsigned_char* thinType, 
                                              double* normalThickness, double* reverseThickness) = 0;
  // [-1] Установить параметры тонкой стенки элемента.
  virtual void STDMETHODCALLTYPE SetThinParam(long thin, unsigned_char thinType, 
                                              double normalThickness, double reverseThickness) = 0;
  // [-1] Получить указатель на интерфейс параметров тонкой стенки.
  virtual Kompas6api3d5com_tlb::IThinParam* STDMETHODCALLTYPE ThinParam(void) = 0;
  // [-1] Получить длину кривой траектории(ST_MIX_MM..ST_MIX_M еденицы измерения).
  virtual double STDMETHODCALLTYPE GetPathLength(unsigned bitVector) = 0;
};

// *********************************************************************//
// Interface: IBossEvolutionDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0365-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IBossEvolutionDefinition  : public IUnknown
{
public:
  // [-1] Установить эскиз сечения кинематического элемента.
  virtual long STDMETHODCALLTYPE SetSketch(Kompas6api3d5com_tlb::IEntity* sketch) = 0;
  // [-1] Получить указатель на интерфейс эскиза сечения кинематического элемента.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetSketch(void) = 0;
  // [-1] Получить указатель на интерфейс массива кривых, задающих траекторию движения сечения кинематического элемента.
  virtual Kompas6api3d5com_tlb::IEntityCollection* STDMETHODCALLTYPE PathPartArray(void) = 0;
  // [-1] Получить тип движения сечения по траектории.
  virtual short STDMETHODCALLTYPE GetSketchShiftType(void) = 0;
  // [-1] Установить тип движения сечения по траектории.
  virtual long STDMETHODCALLTYPE SetSketchShiftType(short sketchShiftType) = 0;
  // [-1] Получить параметры тонкой стенки элемента.
  virtual long STDMETHODCALLTYPE GetThinParam(long* thin, unsigned_char* thinType, 
                                              double* normalThickness, double* reverseThickness) = 0;
  // [-1] Установить параметры тонкой стенки элемента.
  virtual void STDMETHODCALLTYPE SetThinParam(long thin, unsigned_char thinType, 
                                              double normalThickness, double reverseThickness) = 0;
  // [-1] Получить указатель на интерфейс параметров тонкой стенки.
  virtual Kompas6api3d5com_tlb::IThinParam* STDMETHODCALLTYPE ThinParam(void) = 0;
  // [-1] Получить указатель на интерфейс области применения.
  virtual Kompas6api3d5com_tlb::IChooseBodies* STDMETHODCALLTYPE ChooseBodies(void) = 0;
  // [-1] Получить длину кривой траектории(ST_MIX_MM..ST_MIX_M еденицы измерения).
  virtual double STDMETHODCALLTYPE GetPathLength(unsigned bitVector) = 0;
  // [-1] Получить указатель на интерфейс для работы с областью применения для компонентов.
  virtual Kompas6api3d5com_tlb::IChooseParts* STDMETHODCALLTYPE ChooseParts(void) = 0;
  // [-1] Область применения.
  virtual long STDMETHODCALLTYPE SetChooseType(long val) = 0;
  // [-1] Область применения.
  virtual long STDMETHODCALLTYPE GetChooseType(void) = 0;
};

// *********************************************************************//
// Interface: ICutEvolutionDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0366-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface ICutEvolutionDefinition  : public IUnknown
{
public:
  // [-1] Установить эскиз сечения кинематического элемента.
  virtual long STDMETHODCALLTYPE SetSketch(Kompas6api3d5com_tlb::IEntity* sketch) = 0;
  // [-1] Получить указатель на интерфейс эскиза сечения кинематического элемента.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetSketch(void) = 0;
  // [-1] Получить указатель на интерфейс массива кривых, задающих траекторию движения сечения кинематического элемента.
  virtual Kompas6api3d5com_tlb::IEntityCollection* STDMETHODCALLTYPE PathPartArray(void) = 0;
  // [-1] Получить тип движения сечения по траектории.
  virtual short STDMETHODCALLTYPE GetSketchShiftType(void) = 0;
  // [-1] Установить тип движения сечения по траектории.
  virtual long STDMETHODCALLTYPE SetSketchShiftType(short sketchShiftType) = 0;
  // [-1] Получить признак результата операции.
  virtual long STDMETHODCALLTYPE GetCut(void) = 0;
  // [-1] Установить признак результата операции.
  virtual long STDMETHODCALLTYPE SetCut(long cut) = 0;
  // [-1] Получить параметры тонкой стенки элемента.
  virtual long STDMETHODCALLTYPE GetThinParam(long* thin, unsigned_char* thinType, 
                                              double* normalThickness, double* reverseThickness) = 0;
  // [-1] Установить параметры тонкой стенки элемента.
  virtual void STDMETHODCALLTYPE SetThinParam(long thin, unsigned_char thinType, 
                                              double normalThickness, double reverseThickness) = 0;
  // [-1] Получить указатель на интерфейс параметров тонкой стенки.
  virtual Kompas6api3d5com_tlb::IThinParam* STDMETHODCALLTYPE ThinParam(void) = 0;
  // [-1] Получить указатель на интерфейс области применения.
  virtual Kompas6api3d5com_tlb::IChooseBodies* STDMETHODCALLTYPE ChooseBodies(void) = 0;
  // [-1] Получить указатель на интерфейс для работы с областью применения для компонентов.
  virtual Kompas6api3d5com_tlb::IChooseParts* STDMETHODCALLTYPE ChooseParts(void) = 0;
  // [-1] Область применения.
  virtual long STDMETHODCALLTYPE SetChooseType(long val) = 0;
  // [-1] Область применения.
  virtual long STDMETHODCALLTYPE GetChooseType(void) = 0;
  // [-1] Получить длину кривой траектории(ST_MIX_MM..ST_MIX_M еденицы измерения).
  virtual double STDMETHODCALLTYPE GetPathLength(unsigned bitVector) = 0;
};

// *********************************************************************//
// Interface: IFilletDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0367-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IFilletDefinition  : public IUnknown
{
public:
  // [-1] Получить радиус скругления.
  virtual double STDMETHODCALLTYPE GetRadius(void) = 0;
  // [-1] Установить радиус скругления.
  virtual void STDMETHODCALLTYPE SetRadius(double radius) = 0;
  // [-1] Получить признак продолжения скругления по касательным ребрам.
  virtual long STDMETHODCALLTYPE GetTangent(void) = 0;
  // [-1] Установить признак продолжения скругления по касательным ребрам.
  virtual void STDMETHODCALLTYPE SetTangent(long val) = 0;
  // [-1] Получить указатель на интерфейс массива скругляемых объектов (граней и ребер).
  virtual Kompas6api3d5com_tlb::IEntityCollection* STDMETHODCALLTYPE Array(void) = 0;
};

// *********************************************************************//
// Interface: IChamferDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0368-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IChamferDefinition  : public IUnknown
{
public:
  // [-1] Получить параметры фаски.
  virtual long STDMETHODCALLTYPE GetChamferParam(long* transfer, double* distance1, 
                                                 double* distance2) = 0;
  // [-1] Установить параметры фаски.
  virtual void STDMETHODCALLTYPE SetChamferParam(long transfer, double distance1, double distance2) = 0;
  // [-1] Получить признак продолжения фаски по касательным ребрам.
  virtual long STDMETHODCALLTYPE GetTangent(void) = 0;
  // [-1] Установить признак продолжения фаски по касательным ребрам.
  virtual void STDMETHODCALLTYPE SetTangent(long val) = 0;
  // [-1] Получить указатель на интерфейс массива ребер и граней, на которых строится фаска.
  virtual Kompas6api3d5com_tlb::IEntityCollection* STDMETHODCALLTYPE Array(void) = 0;
};

// *********************************************************************//
// Interface: IShellDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0369-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IShellDefinition  : public IUnknown
{
public:
  // [-1] Получить указатель на интерфейс массива удаляемых граней.
  virtual Kompas6api3d5com_tlb::IEntityCollection* STDMETHODCALLTYPE FaceArray(void) = 0;
  // [-1] Получить направление построения оболочки.
  virtual long STDMETHODCALLTYPE GetThinType(void) = 0;
  // [-1] Установить направление построения оболочки.
  virtual long STDMETHODCALLTYPE SetThinType(long thinType) = 0;
  // [-1] Получить толщина оболочки.
  virtual double STDMETHODCALLTYPE GetThickness(void) = 0;
  // [-1] Установить толщина оболочки.
  virtual long STDMETHODCALLTYPE SetThickness(double thickness) = 0;
};

// *********************************************************************//
// Interface: ICopyMeshDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0370-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface ICopyMeshDefinition  : public IUnknown
{
public:
  // [-1] Получить массив операций для копирования.
  virtual Kompas6api3d5com_tlb::IEntityCollection* STDMETHODCALLTYPE OperationArray(void) = 0;
  // [-1] Получить угол наклона 1-ой оси.
  virtual double STDMETHODCALLTYPE GetAngle1(void) = 0;
  // [-1] Установить угол наклона 1-ой оси.
  virtual long STDMETHODCALLTYPE SetAngle1(double angle) = 0;
  // [-1] Получить количество копий по 1-ой оси.
  virtual long STDMETHODCALLTYPE GetCount1(void) = 0;
  // [-1] Установить количество копий по 1-ой оси.
  virtual long STDMETHODCALLTYPE SetCount1(long count) = 0;
  // [-1] Получить шаг вдоль 1-ой оси.
  virtual double STDMETHODCALLTYPE GetStep1(void) = 0;
  // [-1] Установить шаг вдоль 1-ой оси.
  virtual long STDMETHODCALLTYPE SetStep1(double step) = 0;
  // [-1] Получить признак полного шага вдоль 1-ой оси.
  virtual long STDMETHODCALLTYPE GetFactor1(void) = 0;
  // [-1] Установить признак полного шага вдоль 1-ой оси.
  virtual long STDMETHODCALLTYPE SetFactor1(long factor) = 0;
  // [-1] Получить угол наклона 2-ой оси.
  virtual double STDMETHODCALLTYPE GetAngle2(void) = 0;
  // [-1] Установить угол наклона 2-ой оси.
  virtual long STDMETHODCALLTYPE SetAngle2(double angle) = 0;
  // [-1] Получить количество копий по 2-ой оси.
  virtual long STDMETHODCALLTYPE GetCount2(void) = 0;
  // [-1] Установить количество копий по 2-ой оси.
  virtual long STDMETHODCALLTYPE SetCount2(long count) = 0;
  // [-1] Получить шаг вдоль 2-ой оси.
  virtual double STDMETHODCALLTYPE GetStep2(void) = 0;
  // [-1] Установить шаг вдоль 2-ой оси.
  virtual long STDMETHODCALLTYPE SetStep2(double step) = 0;
  // [-1] Получить признак полного шага вдоль 2-ой оси.
  virtual long STDMETHODCALLTYPE GetFactor2(void) = 0;
  // [-1] Установить признак полного шага вдоль 2-ой оси.
  virtual long STDMETHODCALLTYPE SetFactor2(long factor) = 0;
  // [-1] Получить флаг копирования внутри сетки.
  virtual long STDMETHODCALLTYPE GetInsideFlag(void) = 0;
  // [-1] Установить флаг копирования внутри сетки.
  virtual long STDMETHODCALLTYPE SetInsideFlag(long flag) = 0;
  // [-1] Получить параметры копирования.
  virtual long STDMETHODCALLTYPE GetCopyParamAlongAxis(long firstAxis, double* angle, long* count, 
                                                       double* step, long* factor) = 0;
  // [-1] Установить параметры копирования.
  virtual long STDMETHODCALLTYPE SetCopyParamAlongAxis(long firstAxis, double angle, long count, 
                                                       double step, long factor) = 0;
  // [-1] Получить массив индексов удаленных копий.
  virtual Kompas6api3d5com_tlb::IDeletedCopyCollection* STDMETHODCALLTYPE DeletedCollection(void) = 0;
  // [-1] Использовать геометрическое копирование.
  virtual long STDMETHODCALLTYPE GetGeomArray(void) = 0;
  // [-1] Использовать геометрическое копирование.
  virtual long STDMETHODCALLTYPE SetGeomArray(long val) = 0;
  // [-1] Получить ось операции 1.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetAxis1(void) = 0;
  // [-1] Установить ось операции 1.
  virtual long STDMETHODCALLTYPE SetAxis1(Kompas6api3d5com_tlb::IEntity* axis) = 0;
  // [-1] Получить ось операции 2.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetAxis2(void) = 0;
  // [-1] Установить ось операции 2.
  virtual long STDMETHODCALLTYPE SetAxis2(Kompas6api3d5com_tlb::IEntity* axis) = 0;
};

// *********************************************************************//
// Interface: IDeletedCopyCollection
// Flags:     (16) Hidden
// GUID:      {BEC3920D-6238-401A-86A3-A600570F47A4}
// *********************************************************************//
interface IDeletedCopyCollection  : public IUnknown
{
public:
  // [-1] Обновить массив.
  virtual long STDMETHODCALLTYPE Refresh(void) = 0;
  // [-1] Получить количество элементов массива.
  virtual long STDMETHODCALLTYPE GetCount(void) = 0;
  // [-1] Получить указатель на интерфейс первого компонента.
  virtual long STDMETHODCALLTYPE First(long* index1, long* index2) = 0;
  // [-1] Получить указатель на интерфейс последнего компонента.
  virtual long STDMETHODCALLTYPE Last(long* index1, long* index2) = 0;
  // [-1] Получить указатель на интерфейс следующего компонента.
  virtual long STDMETHODCALLTYPE Next(long* index1, long* index2) = 0;
  // [-1] Получить указатель на интерфейс предыдущего компонента.
  virtual long STDMETHODCALLTYPE Prev(long* index1, long* index2) = 0;
  // [-1] Получить указатель на интерфейс компонента по индексу.
  virtual long STDMETHODCALLTYPE GetByIndex(long index, long* index1, long* index2) = 0;
  // [-1] Добавить компонент в массив.
  virtual long STDMETHODCALLTYPE Add(long index1, long index2) = 0;
  // [-1] Добавить в массив компонент с заданным индексом.
  virtual long STDMETHODCALLTYPE AddAt(long index1, long index2, long index) = 0;
  // [-1] Отсоединить от массива компонент с указанным индексом.
  virtual long STDMETHODCALLTYPE DetachByIndex(long index) = 0;
  // [-1] Отсоединить компонент от массива.
  virtual long STDMETHODCALLTYPE DetachByBody(long index1, long index2) = 0;
  // [-1] Очистить массив.
  virtual long STDMETHODCALLTYPE Clear(void) = 0;
  // [-1] Установить компонент в массиве по индексу.
  virtual long STDMETHODCALLTYPE SetByIndex(long index1, long index2, long index) = 0;
  // [-1] Получить индекс элемента массива.
  virtual unsigned_long STDMETHODCALLTYPE FindIt(long index1, long index2) = 0;
};

// *********************************************************************//
// Interface: ICopyCircularDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0371-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface ICopyCircularDefinition  : public IUnknown
{
public:
  // [-1] Получить массив операций для копирования.
  virtual Kompas6api3d5com_tlb::IEntityCollection* STDMETHODCALLTYPE GetOperationArray(void) = 0;
  // [-1] Получить ось операции.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetAxis(void) = 0;
  // [-1] Установить ось операции.
  virtual long STDMETHODCALLTYPE SetAxis(Kompas6api3d5com_tlb::IEntity* axis) = 0;
  // [-1] Получить количество копий  в радиальном направлении.
  virtual long STDMETHODCALLTYPE GetCount1(void) = 0;
  // [-1] Установить количество копий  в радиальном направлении.
  virtual long STDMETHODCALLTYPE SetCount1(long count) = 0;
  // [-1] Получить шаг вдоль радиального направления.
  virtual double STDMETHODCALLTYPE GetStep1(void) = 0;
  // [-1] Установить шаг вдоль радиального направления.
  virtual long STDMETHODCALLTYPE SetStep1(double step) = 0;
  // [-1] Получить признак полного шага вдоль вдоль радиального направления.
  virtual long STDMETHODCALLTYPE GetFactor1(void) = 0;
  // [-1] Установить признак полного шага вдоль вдоль радиального направления.
  virtual long STDMETHODCALLTYPE SetFactor1(long factor) = 0;
  // [-1] Получить количество копий в кольцевом направлении.
  virtual long STDMETHODCALLTYPE GetCount2(void) = 0;
  // [-1] Установить количество копий в кольцевом направлении.
  virtual long STDMETHODCALLTYPE SetCount2(long count) = 0;
  // [-1] Получить шаг вдоль кольцевого направления.
  virtual double STDMETHODCALLTYPE GetStep2(void) = 0;
  // [-1] Установить шаг вдоль кольцевого направления.
  virtual long STDMETHODCALLTYPE SetStep2(double step) = 0;
  // [-1] Получить признак полного шага вдоль кольцевого направления.
  virtual long STDMETHODCALLTYPE GetFactor2(void) = 0;
  // [-1] Установить признак полного шага вдоль кольцевого направления.
  virtual long STDMETHODCALLTYPE SetFactor2(long factor) = 0;
  // [-1] Получить флаг обратного направления.
  virtual long STDMETHODCALLTYPE GetInverce(void) = 0;
  // [-1] Установить флаг обратного направления.
  virtual long STDMETHODCALLTYPE SetInverce(long inverce) = 0;
  // [-1] Получить параметры копирования.
  virtual long STDMETHODCALLTYPE GetCopyParamAlongDir(long* count, double* step, long* factor, 
                                                      long dir) = 0;
  // [-1] Установить параметры копирования.
  virtual long STDMETHODCALLTYPE SetCopyParamAlongDir(long count, double step, long factor, long dir) = 0;
  // [-1] Получить массив индексов удаленных копий.
  virtual Kompas6api3d5com_tlb::IDeletedCopyCollection* STDMETHODCALLTYPE DeletedCollection(void) = 0;
  // [-1] Использовать геометрическое копирование.
  virtual long STDMETHODCALLTYPE GetGeomArray(void) = 0;
  // [-1] Использовать геометрическое копирование.
  virtual long STDMETHODCALLTYPE SetGeomArray(long val) = 0;
};

// *********************************************************************//
// Interface: ICopyCurveDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0372-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface ICopyCurveDefinition  : public IUnknown
{
public:
  // [-1] Получить массив операций для копирования.
  virtual Kompas6api3d5com_tlb::IEntityCollection* STDMETHODCALLTYPE OperationArray(void) = 0;
  // [-1] Получить массив кривых.
  virtual Kompas6api3d5com_tlb::IEntityCollection* STDMETHODCALLTYPE CurveArray(void) = 0;
  // [-1] Получить шаг.
  virtual double STDMETHODCALLTYPE GetStep(void) = 0;
  // [-1] Установить шаг.
  virtual long STDMETHODCALLTYPE SetStep(double step) = 0;
  // [-1] Получить количество копий.
  virtual long STDMETHODCALLTYPE GetCount(void) = 0;
  // [-1] Установить количество копий.
  virtual long STDMETHODCALLTYPE SetCount(long count) = 0;
  // [-1] Получить признак полного шага.
  virtual long STDMETHODCALLTYPE GetFactor(void) = 0;
  // [-1] Установить признак полного шага.
  virtual long STDMETHODCALLTYPE SetFactor(long factor) = 0;
  // [-1] Получить направление.
  virtual long STDMETHODCALLTYPE GetSence(void) = 0;
  // [-1] Установить направление.
  virtual long STDMETHODCALLTYPE SetSence(long sence) = 0;
  // [-1] Получить сохранение угла.
  virtual long STDMETHODCALLTYPE GetKeepAngle(void) = 0;
  // [-1] Установить сохранение угла.
  virtual long STDMETHODCALLTYPE SetKeepAngle(long keepAngle) = 0;
  // [-1] Получить полную длину.
  virtual long STDMETHODCALLTYPE GetFullCurve(void) = 0;
  // [-1] Установить полную длину.
  virtual long STDMETHODCALLTYPE SetFullCurve(long fullCurve) = 0;
  // [-1] Получить массив индексов удаленных копий.
  virtual Kompas6api3d5com_tlb::IDeletedCopyCollection* STDMETHODCALLTYPE DeletedCollection(void) = 0;
  // [-1] Использовать геометрическое копирование.
  virtual long STDMETHODCALLTYPE GetGeomArray(void) = 0;
  // [-1] Использовать геометрическое копирование.
  virtual long STDMETHODCALLTYPE SetGeomArray(long val) = 0;
};

// *********************************************************************//
// Interface: IMirrorDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0373-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IMirrorDefinition  : public IUnknown
{
public:
  // [-1] Получить указатель на интерфейс массива копируемых элементов.
  virtual Kompas6api3d5com_tlb::IEntityCollection* STDMETHODCALLTYPE GetOperationArray(void) = 0;
  // [-1] Получить плоскость симметрии (зеркального копирования).
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetPlane(void) = 0;
  // [-1] Установить плоскость симметрии (зеркального копирования).
  virtual long STDMETHODCALLTYPE SetPlane(Kompas6api3d5com_tlb::IEntity* plane) = 0;
};

// *********************************************************************//
// Interface: IMirrorAllDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0374-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IMirrorAllDefinition  : public IUnknown
{
public:
  // [-1] Получить плоскость отражения.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetPlane(void) = 0;
  // [-1] Установить плоскость отражения.
  virtual long STDMETHODCALLTYPE SetPlane(Kompas6api3d5com_tlb::IEntity* plane) = 0;
  // [-1] Получить указатель на интерфейс для работы с областью применения для тел.
  virtual Kompas6api3d5com_tlb::IChooseBodies* STDMETHODCALLTYPE ChooseBodies(void) = 0;
};

// *********************************************************************//
// Interface: ICutByPlaneDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0375-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface ICutByPlaneDefinition  : public IUnknown
{
public:
  // [-1] Получить секущую плоскость.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetPlane(void) = 0;
  // [-1] Установить секущую плоскость.
  virtual long STDMETHODCALLTYPE SetPlane(Kompas6api3d5com_tlb::IEntity* plane) = 0;
  // [-1] Получить направление отсечения.
  virtual long STDMETHODCALLTYPE GetDirection(void) = 0;
  // [-1] Установить направление отсечения.
  virtual long STDMETHODCALLTYPE SetDirection(long direction) = 0;
  // [-1] Получить указатель на интерфейс для работы с областью применения для тел.
  virtual Kompas6api3d5com_tlb::IChooseBodies* STDMETHODCALLTYPE ChooseBodies(void) = 0;
  // [-1] Получить указатель на интерфейс для работы с областью применения для компонентов.
  virtual Kompas6api3d5com_tlb::IChooseParts* STDMETHODCALLTYPE ChooseParts(void) = 0;
  // [-1] Область применения.
  virtual long STDMETHODCALLTYPE SetChooseType(long val) = 0;
  // [-1] Область применения.
  virtual long STDMETHODCALLTYPE GetChooseType(void) = 0;
};

// *********************************************************************//
// Interface: ICutBySketchDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0376-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface ICutBySketchDefinition  : public IUnknown
{
public:
  // [-1] Получить эскиз секущей поверхности.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetSketch(void) = 0;
  // [-1] Установить эскиз секущей поверхности.
  virtual long STDMETHODCALLTYPE SetSketch(Kompas6api3d5com_tlb::IEntity* sketch) = 0;
  // [-1] Получить направление отсечения.
  virtual long STDMETHODCALLTYPE GetDirection(void) = 0;
  // [-1] Установить направление отсечения.
  virtual long STDMETHODCALLTYPE SetDirection(long direction) = 0;
  // [-1] Получить указатель на интерфейс для работы с областью применения для тел.
  virtual Kompas6api3d5com_tlb::IChooseBodies* STDMETHODCALLTYPE ChooseBodies(void) = 0;
  // [-1] Получить указатель на интерфейс для работы с областью применения для компонентов.
  virtual Kompas6api3d5com_tlb::IChooseParts* STDMETHODCALLTYPE ChooseParts(void) = 0;
  // [-1] Область применения.
  virtual long STDMETHODCALLTYPE SetChooseType(long val) = 0;
  // [-1] Область применения.
  virtual long STDMETHODCALLTYPE GetChooseType(void) = 0;
};

// *********************************************************************//
// Interface: IMeshPartArrayDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0377-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IMeshPartArrayDefinition  : public IUnknown
{
public:
  // [-1] Получить указатель на массив компонентов для копирования.
  virtual Kompas6api3d5com_tlb::IPartCollection* STDMETHODCALLTYPE PartArray(void) = 0;
  // [-1] Получить угол наклона первой оси в текущей системе координат.
  virtual double STDMETHODCALLTYPE GetAngle1(void) = 0;
  // [-1] Установить угол наклона первой оси в текущей системе координат.
  virtual long STDMETHODCALLTYPE SetAngle1(double angle) = 0;
  // [-1] Получить количество копий вдоль первой оси.
  virtual long STDMETHODCALLTYPE GetCount1(void) = 0;
  // [-1] Установить количество копий вдоль первой оси.
  virtual long STDMETHODCALLTYPE SetCount1(long count) = 0;
  // [-1] Получить шаг копирования вдоль первой оси.
  virtual double STDMETHODCALLTYPE GetStep1(void) = 0;
  // [-1] Установить шаг копирования вдоль первой оси.
  virtual long STDMETHODCALLTYPE SetStep1(double step) = 0;
  // [-1] Получить признак полного шага копирования вдоль первой оси.
  virtual long STDMETHODCALLTYPE GetFactor1(void) = 0;
  // [-1] Установить признак полного шага копирования вдоль первой оси.
  virtual long STDMETHODCALLTYPE SetFactor1(long factor) = 0;
  // [-1] Получить угол наклона второй оси сетки относительно первой.
  virtual double STDMETHODCALLTYPE GetAngle2(void) = 0;
  // [-1] Установить угол наклона второй оси сетки относительно первой.
  virtual long STDMETHODCALLTYPE SetAngle2(double angle) = 0;
  // [-1] Получить количество копий вдоль второй оси.
  virtual long STDMETHODCALLTYPE GetCount2(void) = 0;
  // [-1] Установить количество копий вдоль второй оси.
  virtual long STDMETHODCALLTYPE SetCount2(long count) = 0;
  // [-1] Получить шаг копирования вдоль второй оси.
  virtual double STDMETHODCALLTYPE GetStep2(void) = 0;
  // [-1] Установить шаг копирования вдоль второй оси.
  virtual long STDMETHODCALLTYPE SetStep2(double step) = 0;
  // [-1] Получить первую ось сетки.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetAxis1(void) = 0;
  // [-1] Установить первую ось сетки.
  virtual long STDMETHODCALLTYPE SetAxis1(Kompas6api3d5com_tlb::IEntity* axis) = 0;
  // [-1] Получить вторую ось сетки.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetAxis2(void) = 0;
  // [-1] Установить вторую ось сетки.
  virtual long STDMETHODCALLTYPE SetAxis2(Kompas6api3d5com_tlb::IEntity* axis) = 0;
  // [-1] Получить признак полного шага копирования вдоль второй оси.
  virtual long STDMETHODCALLTYPE GetFactor2(void) = 0;
  // [-1] Установить признак полного шага копирования вдоль второй оси.
  virtual long STDMETHODCALLTYPE SetFactor2(long factor) = 0;
  // [-1] Получить признак наличия копий внутри сетки.
  virtual long STDMETHODCALLTYPE GetInsideFlag(void) = 0;
  // [-1] Установить признак наличия копий внутри сетки.
  virtual long STDMETHODCALLTYPE SetInsideFlag(long flag) = 0;
  // [-1] Получить параметры копирования.
  virtual long STDMETHODCALLTYPE GetCopyParamAlongAxis(long firstAxis, double* angle, long* count, 
                                                       double* step, long* factor) = 0;
  // [-1] Установить параметры копирования.
  virtual long STDMETHODCALLTYPE SetCopyParamAlongAxis(long firstAxis, double angle, long count, 
                                                       double step, long factor) = 0;
  // [-1] Получить массив индексов удаленных копий.
  virtual Kompas6api3d5com_tlb::IDeletedCopyCollection* STDMETHODCALLTYPE DeletedCollection(void) = 0;
};

// *********************************************************************//
// Interface: ICircularPartArrayDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0378-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface ICircularPartArrayDefinition  : public IUnknown
{
public:
  // [-1] Указатель на массив компонентов для копирования.
  virtual Kompas6api3d5com_tlb::IPartCollection* STDMETHODCALLTYPE PartArray(void) = 0;
  // [-1] Получить указатель на ось копирования.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetAxis(void) = 0;
  // [-1] Установить указатель на ось копирования.
  virtual long STDMETHODCALLTYPE SetAxis(Kompas6api3d5com_tlb::IEntity* axis) = 0;
  // [-1] Получить количество копий в радиальном направлении.
  virtual long STDMETHODCALLTYPE GetCount1(void) = 0;
  // [-1] Установить количество копий в радиальном направлении.
  virtual long STDMETHODCALLTYPE SetCount1(long count) = 0;
  // [-1] Получить шаг копирования в радиальном направлении.
  virtual double STDMETHODCALLTYPE GetStep1(void) = 0;
  // [-1] Установить шаг копирования в радиальном направлении.
  virtual long STDMETHODCALLTYPE SetStep1(double step) = 0;
  // [-1] Получить признак полного шага в радиальном направлении.
  virtual long STDMETHODCALLTYPE GetFactor1(void) = 0;
  // [-1] Установить признак полного шага в радиальном направлении.
  virtual long STDMETHODCALLTYPE SetFactor1(long factor) = 0;
  // [-1] Получить количество копий в кольцевом направлении.
  virtual long STDMETHODCALLTYPE GetCount2(void) = 0;
  // [-1] Установить количество копий в кольцевом направлении.
  virtual long STDMETHODCALLTYPE SetCount2(long count) = 0;
  // [-1] Получить шаг копирования в кольцевом направлении.
  virtual double STDMETHODCALLTYPE GetStep2(void) = 0;
  // [-1] Установить шаг копирования в кольцевом направлении.
  virtual long STDMETHODCALLTYPE SetStep2(double step) = 0;
  // [-1] Получить признак полного шага в кольцевом направлении.
  virtual long STDMETHODCALLTYPE GetFactor2(void) = 0;
  // [-1] Установить признак полного шага в кольцевом направлении.
  virtual long STDMETHODCALLTYPE SetFactor2(long factor) = 0;
  // [-1] Получить признак направления копирования.
  virtual long STDMETHODCALLTYPE GetInverce(void) = 0;
  // [-1] Установить признак направления копирования.
  virtual long STDMETHODCALLTYPE SetInverce(long inverce) = 0;
  // [-1] Получить параметры копирования.
  virtual long STDMETHODCALLTYPE GetCopyParamAlongDir(long* count, double* step, long* factor, 
                                                      long dir) = 0;
  // [-1] Установить параметры копирования.
  virtual long STDMETHODCALLTYPE SetCopyParamAlongDir(long count, double step, long factor, long dir) = 0;
  // [-1] Получить массив индексов удаленных копий.
  virtual Kompas6api3d5com_tlb::IDeletedCopyCollection* STDMETHODCALLTYPE DeletedCollection(void) = 0;
  // [-1] Сохранять угол.
  virtual long STDMETHODCALLTYPE GetKeepAngle(void) = 0;
  // [-1] Сохранять угол.
  virtual long STDMETHODCALLTYPE SetKeepAngle(long keepAngle) = 0;
};

// *********************************************************************//
// Interface: ICurvePartArrayDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0379-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface ICurvePartArrayDefinition  : public IUnknown
{
public:
  // [-1] Получить указатель на массив компонентов для копирования.
  virtual Kompas6api3d5com_tlb::IPartCollection* STDMETHODCALLTYPE PartArray(void) = 0;
  // [-1] Получить указатель на массив кривых, определяющих траекторию копирования.
  virtual Kompas6api3d5com_tlb::IEntityCollection* STDMETHODCALLTYPE CurveArray(void) = 0;
  // [-1] Получить шаг копирования.
  virtual double STDMETHODCALLTYPE GetStep(void) = 0;
  // [-1] Установить шаг копирования.
  virtual long STDMETHODCALLTYPE SetStep(double step) = 0;
  // [-1] Получить количество копий.
  virtual long STDMETHODCALLTYPE GetCount(void) = 0;
  // [-1] Установить количество копий.
  virtual long STDMETHODCALLTYPE SetCount(long count) = 0;
  // [-1] Получить признак полного шага.
  virtual long STDMETHODCALLTYPE GetFactor(void) = 0;
  // [-1] Установить признак полного шага.
  virtual long STDMETHODCALLTYPE SetFactor(long factor) = 0;
  // [-1] Получить направление копирования.
  virtual long STDMETHODCALLTYPE GetSence(void) = 0;
  // [-1] Установить направление копирования.
  virtual long STDMETHODCALLTYPE SetSence(long sence) = 0;
  // [-1] Получить признак сохранения угла между исходным элементом и траекторией в начальной точке.
  virtual long STDMETHODCALLTYPE GetKeepAngle(void) = 0;
  // [-1] Установить признак сохранения угла между исходным элементом и траекторией в начальной точке.
  virtual long STDMETHODCALLTYPE SetKeepAngle(long keepAngle) = 0;
  // [-1] Получить признак расположения копий вдоль всей траектории.
  virtual long STDMETHODCALLTYPE GetFullCurve(void) = 0;
  // [-1] Установить признак расположения копий вдоль всей траектории.
  virtual long STDMETHODCALLTYPE SetFullCurve(long fullCurve) = 0;
  // [-1] Получить массив индексов удаленных копий.
  virtual Kompas6api3d5com_tlb::IDeletedCopyCollection* STDMETHODCALLTYPE DeletedCollection(void) = 0;
};

// *********************************************************************//
// Interface: IDerivativePartArrayDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0380-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IDerivativePartArrayDefinition  : public IUnknown
{
public:
  // [-1] Получить указатель на массив компонентов для копирования.
  virtual Kompas6api3d5com_tlb::IPartCollection* STDMETHODCALLTYPE PartArray(void) = 0;
  // [-1] Установить указатель на интерфейс массива-образца.
  virtual long STDMETHODCALLTYPE SetDeriv(Kompas6api3d5com_tlb::IEntity* deriv) = 0;
  // [-1] Получить указатель на интерфейс массива-образца.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetDeriv(void) = 0;
  // [-1] Получить массив индексов удаленных копий.
  virtual Kompas6api3d5com_tlb::IDeletedCopyCollection* STDMETHODCALLTYPE DeletedCollection(void) = 0;
};

// *********************************************************************//
// Interface: IInclineDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0381-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IInclineDefinition  : public IUnknown
{
public:
  // [-1] Получить указатель на интерфейс массива уклоняемых граней.
  virtual Kompas6api3d5com_tlb::IEntityCollection* STDMETHODCALLTYPE FaceArray(void) = 0;
  // [-1] Получить угол уклона.
  virtual double STDMETHODCALLTYPE GetAngle(void) = 0;
  // [-1] Установить угол уклона.
  virtual long STDMETHODCALLTYPE SetAngle(double angle) = 0;
  // [-1] Получить направление уклона.
  virtual long STDMETHODCALLTYPE GetDirection(void) = 0;
  // [-1] Установить направление уклона.
  virtual long STDMETHODCALLTYPE SetDirection(long direction) = 0;
  // [-1] Получить указатель на интерфейс плоскости основания уклона.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetPlane(void) = 0;
  // [-1] Установить указатель на интерфейс плоскости основания уклона.
  virtual long STDMETHODCALLTYPE SetPlane(Kompas6api3d5com_tlb::IEntity* plane) = 0;
};

// *********************************************************************//
// Interface: IRibDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0382-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IRibDefinition  : public IUnknown
{
public:
  // [-1] Получить указатель на интерфейс эскиза ребра.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetSketch(void) = 0;
  // [-1] Установить эскиз ребра.
  virtual long STDMETHODCALLTYPE SetSketch(Kompas6api3d5com_tlb::IEntity* sketch) = 0;
  // [-1] Получить сегмент, задающий направление уклона.
  virtual int STDMETHODCALLTYPE GetIndexSegmentBySketch(void) = 0;
  // [-1] Установить эсегмент, задающий направление уклона.
  virtual long STDMETHODCALLTYPE SetIndexSegmentBySketch(int index) = 0;
  // [-1] Получить угол уклона ребра жесткости.
  virtual double STDMETHODCALLTYPE GetAngle(void) = 0;
  // [-1] Установить угол уклона ребра жесткости.
  virtual long STDMETHODCALLTYPE SetAngle(double angle) = 0;
  // [-1] Получить направление формирования ребра.
  virtual int STDMETHODCALLTYPE GetSide(void) = 0;
  // [-1] Установить направление формирования ребра.
  virtual long STDMETHODCALLTYPE SetSide(int side) = 0;
  // [-1] Получить параметры тонкой стенки элемента.
  virtual long STDMETHODCALLTYPE GetThinParam(unsigned_char* thinType, double* normalThickness, 
                                              double* reverseThickness) = 0;
  // [-1] Установить параметры тонкой стенки элемента.
  virtual void STDMETHODCALLTYPE SetThinParam(unsigned_char thinType, double normalThickness, 
                                              double reverseThickness) = 0;
  // [-1] Получить указатель на интерфейс параметров тонкой стенки.
  virtual Kompas6api3d5com_tlb::IThinParam* STDMETHODCALLTYPE ThinParam(void) = 0;
};

// *********************************************************************//
// Interface: IImportedSurfaceDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0384-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IImportedSurfaceDefinition  : public IUnknown
{
public:
  // [-1] Очистить содержимое.
  virtual long STDMETHODCALLTYPE Clear(void) = 0;
  // [-1] Открыть определение новой кривой.
  virtual long STDMETHODCALLTYPE BeginCurve(void) = 0;
  // [-1] Добавить точку в определение новой spline - кривой.
  virtual long STDMETHODCALLTYPE AddPoint(double x, double y, double z) = 0;
  // [-1] Закрыть кривую.
  virtual long STDMETHODCALLTYPE EndCurve(void) = 0;
  // [-1] Добавить кривую с массивом точек.
  virtual long STDMETHODCALLTYPE AddCurve(VARIANT arr) = 0;
};

// *********************************************************************//
// Interface: IPolygonalLineDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0400-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IPolygonalLineDefinition  : public IUnknown
{
public:
  // [-1] Получить количество вершин ломаной.
  virtual long STDMETHODCALLTYPE GetCountVertex(void) = 0;
  // [-1] Добавить вершину.
  virtual long STDMETHODCALLTYPE AddVertex(double x, double y, double z, double radius) = 0;
  // [-1] Вставить вершину перед указанной.
  virtual long STDMETHODCALLTYPE InsertVertex(long index, double x, double y, double z, 
                                              double radius) = 0;
  // [-1] Удалить вершину с указанным индексом.
  virtual long STDMETHODCALLTYPE DeleteVertex(long index) = 0;
  // [-1] Получить параметры вершины с указанным индексом.
  virtual long STDMETHODCALLTYPE GetParamVertex(long index, double* x, double* y, double* z, 
                                                double* radius) = 0;
  // [-1] Очистить массив вершин ломаной.
  virtual long STDMETHODCALLTYPE Flush(void) = 0;
  // [-1] Установить признак замкнутости ломаной.
  virtual long STDMETHODCALLTYPE SetClosed(long cls) = 0;
  // [-1] Получить признак замкнутости ломаной.
  virtual long STDMETHODCALLTYPE GetClosed(void) = 0;
  // [-1] Прочитать параметры вершин из текстового файла.
  virtual long STDMETHODCALLTYPE ReadFromFile(LPWSTR fileName) = 0;
  // [-1] Записать параметры вершин в текстовый файл.
  virtual long STDMETHODCALLTYPE WriteToFile(LPWSTR fileName) = 0;
  // [-1] Получить массив ребер.
  virtual Kompas6api3d5com_tlb::IEdgeCollection* STDMETHODCALLTYPE EdgeCollection(void) = 0;
  // [-1] Создание новой вершины
  virtual Kompas6api3d5com_tlb::IPolygonalLineVertexParam* STDMETHODCALLTYPE AddPointWithParams(int index) = 0;
  // [-1] Получение параметров вершины ломаной
  virtual Kompas6api3d5com_tlb::IPolygonalLineVertexParam* STDMETHODCALLTYPE GetPointParams(int index) = 0;
  // [-1] Отображать свободные вершины.
  virtual long STDMETHODCALLTYPE GetVertexVisible(void) = 0;
  // [-1] Отображать свободные вершины.
  virtual long STDMETHODCALLTYPE SetVertexVisible(long visible) = 0;
  // [-1] Получить указатель на интерфейс математической кривой.
  virtual Kompas6api3d5com_tlb::ICurve3D* STDMETHODCALLTYPE GetCurve3D(void) = 0;
};

// *********************************************************************//
// Interface: IPolygonalLineVertexParam
// Flags:     (16) Hidden
// GUID:      {D2D61E71-151A-4359-A0BE-DEA5A76F2492}
// *********************************************************************//
interface IPolygonalLineVertexParam  : public IUnknown
{
public:
  // [-1] Способ построения.
  virtual int STDMETHODCALLTYPE GetBuildingType(void) = 0;
  // [-1] Способ построения.
  virtual long STDMETHODCALLTYPE SetBuildingType(int type) = 0;
  // [-1] Получить параметры вершины.
  virtual long STDMETHODCALLTYPE GetParamVertex(double* x, double* y, double* z, double* radius) = 0;
  // [-1] Установить параметры вершины.
  virtual long STDMETHODCALLTYPE SetParamVertex(double x, double y, double z, double radius) = 0;
  // [-1] Установить параметры вершины по укозателю на вершину.
  virtual long STDMETHODCALLTYPE SetParamByVertex(Kompas6api3d5com_tlb::IEntity* vertex, 
                                                  double radius) = 0;
  // [-1] Получить расстояние и радиус.
  virtual long STDMETHODCALLTYPE GetParamByDistance(double* distance, double* radius) = 0;
  // [-1] Установить расстояниу и радиус.
  virtual long STDMETHODCALLTYPE SetParamByDistance(double distance, double radius) = 0;
  // [-1] Получить объект относительно которого ведется построение.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetBuildingObject(void) = 0;
  // [-1] Установить объект относительно которого ведется построение.
  virtual long STDMETHODCALLTYPE SetBuildingObject(Kompas6api3d5com_tlb::IEntity* object) = 0;
  // [-1] Получить ассоциировенную вершину.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetAssociation(void) = 0;
  // [-1] Установить ассоциировенную вершину.
  virtual long STDMETHODCALLTYPE SetAssociation(Kompas6api3d5com_tlb::IEntity* vertex) = 0;
  // [-1] Получить вершину.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetVertex(void) = 0;
  // [-1] Получить индекс вершины.
  virtual int STDMETHODCALLTYPE GetIndex(void) = 0;
};

// *********************************************************************//
// Interface: IConicSpiralDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0401-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IConicSpiralDefinition  : public IUnknown
{
public:
  // [-1] Получить количество витков спирали.
  virtual double STDMETHODCALLTYPE GetTurn(void) = 0;
  // [-1] Установить количество витков спирали.
  virtual long STDMETHODCALLTYPE SetTurn(double turn) = 0;
  // [-1] Получить шаг витков спирали.
  virtual double STDMETHODCALLTYPE GetStep(void) = 0;
  // [-1] Установить шаг витков спирали.
  virtual long STDMETHODCALLTYPE SetStep(double step) = 0;
  // [-1] Получить направление навивки спирали.
  virtual long STDMETHODCALLTYPE GetTurnDir(void) = 0;
  // [-1] Установить направление навивки спирали.
  virtual long STDMETHODCALLTYPE SetTurnDir(long turnDir) = 0;
  // [-1] Получить указатель на базовую плоскость спирали.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetPlane(void) = 0;
  // [-1] Установить указатель на базовую плоскость спирали.
  virtual long STDMETHODCALLTYPE SetPlane(Kompas6api3d5com_tlb::IEntity* plane) = 0;
  // [-1] Получить координаты точки привязки спирали на базовой плоскости (точку пересечения оси спирали с базовой плоскостью).
  virtual long STDMETHODCALLTYPE GetLocation(double* x, double* y) = 0;
  // [-1] Установить координаты точки привязки спирали на базовой плоскости (точку пересечения оси спирали с базовой плоскостью).
  virtual long STDMETHODCALLTYPE SetLocation(double x, double y) = 0;
  // [-1] Получить способ построения спирали.
  virtual short STDMETHODCALLTYPE GetBuildMode(void) = 0;
  // [-1] Установить способ построения спирали.
  virtual long STDMETHODCALLTYPE SetBuildMode(short buildMode) = 0;
  // [-1] Получить направление построения спирали.
  virtual long STDMETHODCALLTYPE GetBuildDir(void) = 0;
  // [-1] Установить направление построения спирали.
  virtual long STDMETHODCALLTYPE SetBuildDir(long buildDir) = 0;
  // [-1] Получить высоту спирали.
  virtual double STDMETHODCALLTYPE GetHeight(void) = 0;
  // [-1] Установить высоту спирали.
  virtual long STDMETHODCALLTYPE SetHeight(double height) = 0;
  // [-1] Получить способ задания высоты.
  virtual short STDMETHODCALLTYPE GetHeightType(void) = 0;
  // [-1] Установить способ задания высоты.
  virtual long STDMETHODCALLTYPE SetHeightType(short heightType) = 0;
  // [-1] Получить дополнительную высоту.
  virtual double STDMETHODCALLTYPE GetHeightAdd(void) = 0;
  // [-1] Установить дополнительную высоту.
  virtual long STDMETHODCALLTYPE SetHeightAdd(double heightAdd) = 0;
  // [-1] Получить признак дополнительной высоты.
  virtual long STDMETHODCALLTYPE GetHeightAddHow(void) = 0;
  // [-1] Установить признак дополнительной высоты.
  virtual long STDMETHODCALLTYPE SetHeightAddHow(long heightAddHow) = 0;
  // [-1] Установить объект, задающий высоту.
  virtual long STDMETHODCALLTYPE SetHeightObject(Kompas6api3d5com_tlb::IEntity* heightObject) = 0;
  // [-1] Получить объект, задающий высоту.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetHeightObject(void) = 0;
  // [-1] Получить начальный диаметр спирали.
  virtual double STDMETHODCALLTYPE GetInitialDiam(void) = 0;
  // [-1] Установить начальный диаметр спирали.
  virtual long STDMETHODCALLTYPE SetInitialDiam(double diam1Type) = 0;
  // [-1] Получить способ задания начального диаметра.
  virtual short STDMETHODCALLTYPE GetInitialDiamType(void) = 0;
  // [-1] Установить способ задания начального диаметра.
  virtual long STDMETHODCALLTYPE SetInitialDiamType(short diam1Type) = 0;
  // [-1] Получить объект, задающий начальный диаметр.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetInitialDiamObject(void) = 0;
  // [-1] Установить объект, задающий начальный диаметр.
  virtual long STDMETHODCALLTYPE SetInitialDiamObject(Kompas6api3d5com_tlb::IEntity* diam1Object) = 0;
  // [-1] Получить конечный диаметр спирали.
  virtual double STDMETHODCALLTYPE GetTerminalDiam(void) = 0;
  // [-1] Установить конечный диаметр спирали.
  virtual long STDMETHODCALLTYPE SetTerminalDiam(double diam2) = 0;
  // [-1] Получить способ задания конечного диаметра.
  virtual short STDMETHODCALLTYPE GetTerminalDiamType(void) = 0;
  // [-1] Установить способ задания конечного диаметра.
  virtual long STDMETHODCALLTYPE SetTerminalDiamType(short diam2Type) = 0;
  // [-1] Получить объект, задающий конечный диаметр.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetTerminalDiamObject(void) = 0;
  // [-1] Установить объект, задающий конечный диаметр.
  virtual long STDMETHODCALLTYPE SetTerminalDiamObject(Kompas6api3d5com_tlb::IEntity* diam2Object) = 0;
  // [-1] Получить угол наклона образующей спирали.
  virtual double STDMETHODCALLTYPE GetTiltAngle(void) = 0;
  // [-1] Установить угол наклона образующей спирали.
  virtual long STDMETHODCALLTYPE SetTiltAngle(double tiltAngle) = 0;
  // [-1] Получить направление отсчета угла наклона образующей.
  virtual long STDMETHODCALLTYPE GetTiltAngleHow(void) = 0;
  // [-1] Установить направление отсчета угла наклона образующей.
  virtual long STDMETHODCALLTYPE SetTiltAngleHow(long tiltAngleHow) = 0;
  // [-1] Получить начальный угол (или угол поворота спирали вокруг своей оси).
  virtual double STDMETHODCALLTYPE GetFirstAngle(void) = 0;
  // [-1] Установить начальный угол (или угол поворота спирали вокруг своей оси).
  virtual long STDMETHODCALLTYPE SetFirstAngle(double firstAngle) = 0;
  // [-1] Получить указатель на интерфейс эскиза элемента.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetSketch(void) = 0;
  // [-1] Получить указатель на интерфейс математической кривой.
  virtual Kompas6api3d5com_tlb::ICurve3D* STDMETHODCALLTYPE GetCurve3D(void) = 0;
};

// *********************************************************************//
// Interface: ISplineDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0402-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface ISplineDefinition  : public IUnknown
{
public:
  // [-1] Получить количество вершин.
  virtual long STDMETHODCALLTYPE GetCountVertex(void) = 0;
  // [-1] Добавить вершину.
  virtual long STDMETHODCALLTYPE AddVertex(double x, double y, double z, double radius) = 0;
  // [-1] Вставить вершину перед указанной.
  virtual long STDMETHODCALLTYPE InsertVertex(long index, double x, double y, double z, 
                                              double radius) = 0;
  // [-1] Удалить вершину с указанным индексом.
  virtual long STDMETHODCALLTYPE DeleteVertex(long index) = 0;
  // [-1] Получить параметры вершины с указанным индексом.
  virtual long STDMETHODCALLTYPE GetParamVertex(long index, double* x, double* y, double* z, 
                                                double* weight) = 0;
  // [-1] Очистить массив вершин.
  virtual long STDMETHODCALLTYPE Flush(void) = 0;
  // [-1] Установить признак замкнутости сплайна.
  virtual long STDMETHODCALLTYPE SetClosed(long cls) = 0;
  // [-1] Получить признак замкнутости сплайна.
  virtual long STDMETHODCALLTYPE GetClosed(void) = 0;
  // [-1] Прочитать параметры вершин из текстового файла.
  virtual long STDMETHODCALLTYPE ReadFromFile(LPWSTR fileName) = 0;
  // [-1] Записать параметры вершин в текстовый файл.
  virtual long STDMETHODCALLTYPE WriteToFile(LPWSTR fileName) = 0;
  // [-1] Установить признак способа построения сплайна.
  virtual long STDMETHODCALLTYPE SetSplineOnPoles(long splineOnPoles) = 0;
  // [-1] Получить признак способа построения сплайна.
  virtual long STDMETHODCALLTYPE GetSplineOnPoles(void) = 0;
  // [-1] Установить порядок сплайна.
  virtual long STDMETHODCALLTYPE SetDegree(long degree) = 0;
  // [-1] Получить порядок сплайна.
  virtual long STDMETHODCALLTYPE GetDegree(void) = 0;
  // [-1] Добавить вершину по опорному объекту. index == -1 - добавить в конец.
  virtual long STDMETHODCALLTYPE AddVertexAndAssociation(long index, 
                                                         Kompas6api3d5com_tlb::IEntity* obj, 
                                                         double weight) = 0;
  // [-1] Задать опорную точку по индексу.
  virtual long STDMETHODCALLTYPE SetAssociation(long index, Kompas6api3d5com_tlb::IEntity* obj) = 0;
  // [-1] Получить опорную точку по индексу.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetAssociation(long index) = 0;
};

// *********************************************************************//
// Interface: ICylindricSpiralDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0403-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface ICylindricSpiralDefinition  : public IUnknown
{
public:
  // [-1] Получить количество витков спирали.
  virtual double STDMETHODCALLTYPE GetTurn(void) = 0;
  // [-1] Установить количество витков спирали.
  virtual long STDMETHODCALLTYPE SetTurn(double turn) = 0;
  // [-1] Получить шаг витков спирали.
  virtual double STDMETHODCALLTYPE GetStep(void) = 0;
  // [-1] Установить шаг витков спирали.
  virtual long STDMETHODCALLTYPE SetStep(double step) = 0;
  // [-1] Получить шаг витков спирали.
  virtual long STDMETHODCALLTYPE GetTurnDir(void) = 0;
  // [-1] Установить шаг витков спирали.
  virtual long STDMETHODCALLTYPE SetTurnDir(long turnDir) = 0;
  // [-1] Получить базовую плоскость спирали.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetPlane(void) = 0;
  // [-1] Установить базовую плоскость спирали.
  virtual long STDMETHODCALLTYPE SetPlane(Kompas6api3d5com_tlb::IEntity* plane) = 0;
  // [-1] Получить точку привязки спирали на базовой плоскости (точку пересечения оси спирали с базовой плоскостью).
  virtual long STDMETHODCALLTYPE GetLocation(double* x, double* y) = 0;
  // [-1] Установить точку привязки спирали на базовой плоскости (точку пересечения оси спирали с базовой плоскостью).
  virtual long STDMETHODCALLTYPE SetLocation(double x, double y) = 0;
  // [-1] Получить способ построения спирали.
  virtual short STDMETHODCALLTYPE GetBuildMode(void) = 0;
  // [-1] Установить способ построения спирали.
  virtual long STDMETHODCALLTYPE SetBuildMode(short buildMode) = 0;
  // [-1] Получить направление построения спирали.
  virtual long STDMETHODCALLTYPE GetBuildDir(void) = 0;
  // [-1] Установить направление построения спирали.
  virtual long STDMETHODCALLTYPE SetBuildDir(long buildDir) = 0;
  // [-1] Получить высота спирали.
  virtual double STDMETHODCALLTYPE GetHeight(void) = 0;
  // [-1] Установить высота спирали.
  virtual long STDMETHODCALLTYPE SetHeight(double height) = 0;
  // [-1] Получить способ задания высоты.
  virtual short STDMETHODCALLTYPE GetHeightType(void) = 0;
  // [-1] Установить способ задания высоты.
  virtual long STDMETHODCALLTYPE SetHeightType(short heightType) = 0;
  // [-1] Получить дополнительная высота.
  virtual double STDMETHODCALLTYPE GetHeightAdd(void) = 0;
  // [-1] Установить дополнительная высота.
  virtual long STDMETHODCALLTYPE SetHeightAdd(double heightAdd) = 0;
  // [-1] Получить признак дополнительной высоты.
  virtual long STDMETHODCALLTYPE GetHeightAddHow(void) = 0;
  // [-1] Установить признак дополнительной высоты.
  virtual long STDMETHODCALLTYPE SetHeightAddHow(long heightAddHow) = 0;
  // [-1] Установить объект, задающий высоту.
  virtual long STDMETHODCALLTYPE SetHeightObject(Kompas6api3d5com_tlb::IEntity* heightObject) = 0;
  // [-1] Получить объект, задающий высоту.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetHeightObject(void) = 0;
  // [-1] Получить диаметр спирали.
  virtual double STDMETHODCALLTYPE GetDiam(void) = 0;
  // [-1] Установить диаметр спирали.
  virtual long STDMETHODCALLTYPE SetDiam(double diamType) = 0;
  // [-1] Получить способ задания диаметра.
  virtual short STDMETHODCALLTYPE GetDiamType(void) = 0;
  // [-1] Установить способ задания диаметра.
  virtual long STDMETHODCALLTYPE SetDiamType(short diamType) = 0;
  // [-1] Получить объект, задающий диаметр.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetDiamObject(void) = 0;
  // [-1] Установить объект, задающий диаметр.
  virtual long STDMETHODCALLTYPE SetDiamObject(Kompas6api3d5com_tlb::IEntity* diamObject) = 0;
  // [-1] Получить начальный угол (или угол поворота спирали вокруг своей оси).
  virtual double STDMETHODCALLTYPE GetFirstAngle(void) = 0;
  // [-1] Установить начальный угол (или угол поворота спирали вокруг своей оси).
  virtual long STDMETHODCALLTYPE SetFirstAngle(double firstAngle) = 0;
  // [-1] Получить указатель на интерфейс эскиза элемента.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetSketch(void) = 0;
  // [-1] Получить указатель на интерфейс математической кривой.
  virtual Kompas6api3d5com_tlb::ICurve3D* STDMETHODCALLTYPE GetCurve3D(void) = 0;
};

// *********************************************************************//
// Interface: IEvolutionSurfaceDefinition
// Flags:     (16) Hidden
// GUID:      {45702BE9-1505-40AB-BF0C-7FE86D5373E2}
// *********************************************************************//
interface IEvolutionSurfaceDefinition  : public IUnknown
{
public:
  // [-1] Установить эскиз сечения кинематического элемента.
  virtual long STDMETHODCALLTYPE SetSketch(Kompas6api3d5com_tlb::IEntity* sketch) = 0;
  // [-1] Получить указатель на интерфейс эскиза сечения кинематического элемента.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetSketch(void) = 0;
  // [-1] Получить указатель на интерфейс массива кривых, задающих траекторию движения сечения кинематического элемента.
  virtual Kompas6api3d5com_tlb::IEntityCollection* STDMETHODCALLTYPE PathPartArray(void) = 0;
  // [-1] Установить тип движения сечения по траектории.
  virtual short STDMETHODCALLTYPE GetSketchShiftType(void) = 0;
  // [-1] Получить тип движения сечения по траектории.
  virtual long STDMETHODCALLTYPE SetSketchShiftType(short s) = 0;
  // [-1] Установить признак замкнутости поверхности.
  virtual long STDMETHODCALLTYPE GetClosedShell(void) = 0;
  // [-1] Получить признак замкнутости поверхности.
  virtual long STDMETHODCALLTYPE SetClosedShell(long closed) = 0;
  // [-1] Получить длину кривой траектории(ST_MIX_MM..ST_MIX_M еденицы измерения).
  virtual double STDMETHODCALLTYPE GetPathLength(unsigned bitVector) = 0;
};

// *********************************************************************//
// Interface: IExtrusionSurfaceDefinition
// Flags:     (16) Hidden
// GUID:      {6D87BCE9-5D07-41AD-A137-42957DAF0A6F}
// *********************************************************************//
interface IExtrusionSurfaceDefinition  : public IUnknown
{
public:
  // [-1] Установить указатель на интерфейс эскиза элемента.
  virtual long STDMETHODCALLTYPE SetSketch(Kompas6api3d5com_tlb::IEntity* name) = 0;
  // [-1] Получить указатель на интерфейс эскиза элемента.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetSketch(void) = 0;
  // [-1] Получить параметры выдавливания в одном направлении.
  virtual long STDMETHODCALLTYPE GetSideParam(long forward, unsigned_char* type, double* depth, 
                                              double* draftValue, long* draftOutward) = 0;
  // [-1] Установить параметры выдавливания в одном направлении.
  virtual void STDMETHODCALLTYPE SetSideParam(long forward, unsigned_char type, double depth, 
                                              double draftValue, long draftOutward) = 0;
  // [-1] Установить направление выдавливания.
  virtual long STDMETHODCALLTYPE SetDirectionType(long dirType) = 0;
  // [-1] Получить направление выдавливания.
  virtual long STDMETHODCALLTYPE GetDirectionType(void) = 0;
  // [-1] Получить указатель на интерфейс параметров элемента выдавливания.
  virtual Kompas6api3d5com_tlb::IExtrusionParam* STDMETHODCALLTYPE ExtrusionParam(void) = 0;
  // [-1] Получить объект, задающий глубину выдавливания.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetDepthObject(long normal) = 0;
  // [-1] Установить объект, задающий глубину выдавливания.
  virtual long STDMETHODCALLTYPE SetDepthObject(long normal, Kompas6api3d5com_tlb::IEntity* obj) = 0;
  // [-1] Отказаться от установленного методом SetDepthObject объекта, задающего глубину выдавливания.
  virtual long STDMETHODCALLTYPE ResetDepthObject(long normal) = 0;
  // [-1] Установить признак замкнутости поверхности.
  virtual long STDMETHODCALLTYPE GetClosedShell(void) = 0;
  // [-1] Получить признак замкнутости поверхности.
  virtual long STDMETHODCALLTYPE SetClosedShell(long closed) = 0;
};

// *********************************************************************//
// Interface: IRotatedSurfaceDefinition
// Flags:     (16) Hidden
// GUID:      {FD27841D-1374-4F7F-AE8A-C2A44F89120D}
// *********************************************************************//
interface IRotatedSurfaceDefinition  : public IUnknown
{
public:
  // [-1] Установить указатель на интерфейс эскиза элемента.
  virtual long STDMETHODCALLTYPE SetSketch(Kompas6api3d5com_tlb::IEntity* name) = 0;
  // [-1] Получить указатель на интерфейс эскиза элемента.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetSketch(void) = 0;
  // [-1] Получить параметры вращения в одном направлении.
  virtual long STDMETHODCALLTYPE GetSideParam(long forward, double* angle) = 0;
  // [-1] Установить параметры вращения в одном направлении.
  virtual void STDMETHODCALLTYPE SetSideParam(long forward, double angle) = 0;
  // [-1] Установить признак тороида.
  virtual long STDMETHODCALLTYPE SetToroidShapeType(long dirType) = 0;
  // [-1] Получить признак тороида.
  virtual long STDMETHODCALLTYPE GetToroidShapeType(void) = 0;
  // [-1] Установить направление вращения.
  virtual long STDMETHODCALLTYPE SetDirectionType(long dirType) = 0;
  // [-1] Получить направление вращения.
  virtual long STDMETHODCALLTYPE GetDirectionType(void) = 0;
  // [-1] Получить указатель на интерфейс параметров элемента вращения.
  virtual Kompas6api3d5com_tlb::IRotatedParam* STDMETHODCALLTYPE RotatedParam(void) = 0;
  // [-1] Установить признак замкнутости поверхности.
  virtual long STDMETHODCALLTYPE GetClosedShell(void) = 0;
  // [-1] Получить признак замкнутости поверхности.
  virtual long STDMETHODCALLTYPE SetClosedShell(long closed) = 0;
};

// *********************************************************************//
// Interface: ILoftSurfaceDefinition
// Flags:     (16) Hidden
// GUID:      {6E6A127B-233E-401F-8E29-BB298AE0FA45}
// *********************************************************************//
interface ILoftSurfaceDefinition  : public IUnknown
{
public:
  // [-1] Получить параметры элемента по сечениям.
  virtual long STDMETHODCALLTYPE GetLoftParam(long* closed, long* flipVertex, long* autoPath) = 0;
  // [-1] Установить параметры операции по сечениям.
  virtual void STDMETHODCALLTYPE SetLoftParam(long closed, long flipVertex, long autoPath) = 0;
  // [-1] Получить указатель на интерфейс массива эскизов элемента по сечениям.
  virtual Kompas6api3d5com_tlb::IEntityCollection* STDMETHODCALLTYPE Sketchs(void) = 0;
  // [-1] Установить признак замкнутости поверхности.
  virtual long STDMETHODCALLTYPE GetClosedShell(void) = 0;
  // [-1] Получить признак замкнутости поверхности.
  virtual long STDMETHODCALLTYPE SetClosedShell(long closed) = 0;
  // [-1] Получить направляющую линию. Эскиз в котором лежит кривая.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetDirectionalLine(void) = 0;
  // [-1] Установить направляющую линию. Эскиз в котором лежит кривая.
  virtual long STDMETHODCALLTYPE SetDirectionalLine(Kompas6api3d5com_tlb::IEntity* sketch) = 0;
};

// *********************************************************************//
// Interface: IMacro3DDefinition
// Flags:     (16) Hidden
// GUID:      {B6F6D0AB-6339-4FC6-842B-CC96596BCE82}
// *********************************************************************//
interface IMacro3DDefinition  : public IUnknown
{
public:
  // [-1] Получить массив объектов входящих в макрообъект.
  virtual Kompas6api3d5com_tlb::IFeatureCollection* STDMETHODCALLTYPE FeatureCollection(void) = 0;
  // [-1] Управление видимостью состава.
  virtual long STDMETHODCALLTYPE GetStaffVisible(void) = 0;
  // [-1] Управление видимостью состава.
  virtual long STDMETHODCALLTYPE SetStaffVisible(long val) = 0;
  // [-1] Разрущить макрообъект.
  virtual long STDMETHODCALLTYPE Destroy(void) = 0;
  // [-1] Добавить объект в макро.
  virtual long STDMETHODCALLTYPE Add(LPUNKNOWN obj) = 0;
  // [-1] Установить параметры пользователя.
  virtual long STDMETHODCALLTYPE SetUserParam(void* userParam, long size, LPWSTR nameFile, 
                                              LPWSTR nameLib, long number) = 0;
  // [-1] Размер структуры параметров пользователя, хранимых в компоненте.
  virtual long STDMETHODCALLTYPE GetUserParamSize(void) = 0;
  // [-1] Получить параметры пользователя.
  virtual long STDMETHODCALLTYPE GetUserParam(void* userParam, long size) = 0;
  // [-1] Получить имя файла пользовательской библиотеки.
  virtual LPWSTR STDMETHODCALLTYPE GetUserLibraryFileName(void) = 0;
  // [-1] Получить имя пользовательской библиотеки.
  virtual LPWSTR STDMETHODCALLTYPE GetUserLibraryName(void) = 0;
  // [-1] Получить номер команды пользовательской библиотеки.
  virtual long STDMETHODCALLTYPE GetUserLibraryCommand(void) = 0;
  // [-1] Установить объект по индексу.
  virtual long STDMETHODCALLTYPE SetObject(long index, LPUNKNOWN obj) = 0;
  // [-1] Получить объект по индексу.
  virtual LPUNKNOWN STDMETHODCALLTYPE GetObject(long index) = 0;
  // [-1] Кол-во объектов сохраннёных в детали.
  virtual long STDMETHODCALLTYPE GetCountObj(void) = 0;
  // [-1] Удалить все объекты сохранённые в детали.
  virtual long STDMETHODCALLTYPE ClearAllObj(void) = 0;
  // [-1] Получить признак внешнего редактирования макрообъекта.
  virtual long STDMETHODCALLTYPE GetDoubleClickEditOff(void) = 0;
  // [-1] Установить признак внешнего редактирования макрообъекта.
  virtual long STDMETHODCALLTYPE SetDoubleClickEditOff(long val) = 0;
  // [-1] Поддерживается интерфейс внешних свойств объекта.
  virtual long STDMETHODCALLTYPE GetPropertyObjectEditable(void) = 0;
  // [-1] Поддерживается интерфейс внешних свойств объекта.
  virtual long STDMETHODCALLTYPE SetPropertyObjectEditable(long PVal) = 0;
};

// *********************************************************************//
// Interface: IAxisConefaceDefinition
// Flags:     (16) Hidden
// GUID:      {7AA0E540-0338-11D4-A30E-00C026EE094F}
// *********************************************************************//
interface IAxisConefaceDefinition  : public IUnknown
{
public:
  // [-1] Получить указатель на базовую коническую поверхность.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetFace(void) = 0;
  // [-1] Установить указатель на базовую коническую поверхность.
  virtual long STDMETHODCALLTYPE SetFace(Kompas6api3d5com_tlb::IEntity* val) = 0;
  // [-1] Получить интерфейс математической кривой.
  virtual Kompas6api3d5com_tlb::ICurve3D* STDMETHODCALLTYPE GetCurve3D(void) = 0;
};

// *********************************************************************//
// Interface: IUnionComponentsDefinition
// Flags:     (16) Hidden
// GUID:      {7C641671-F791-47AC-B8AE-382428D8A01D}
// *********************************************************************//
interface IUnionComponentsDefinition  : public IUnknown
{
public:
  // [-1] Получить указатель на массив объединяемых компонентов.
  virtual Kompas6api3d5com_tlb::IPartCollection* STDMETHODCALLTYPE PartArray(void) = 0;
};

// *********************************************************************//
// Interface: IMoldCavityDefinition
// Flags:     (16) Hidden
// GUID:      {1DD4FF64-72EF-408A-A9C6-0009B01FFC94}
// *********************************************************************//
interface IMoldCavityDefinition  : public IUnknown
{
public:
  // [-1] Получить коэффициент масштабирования %.
  virtual double STDMETHODCALLTYPE GetScale(void) = 0;
  // [-1] Установить коэффициент масштабирования %.
  virtual long STDMETHODCALLTYPE SetScale(double val) = 0;
  // [-1] Получить указатель на массив вычитаемых компонентов.
  virtual Kompas6api3d5com_tlb::IPartCollection* STDMETHODCALLTYPE PartArray(void) = 0;
  // [-1] Получить вершину относительно которой выполняется масштабирование.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetScaleCentre(void) = 0;
  // [-1] Установить вершину относительно которой выполняется масштабирование.
  virtual long STDMETHODCALLTYPE SetScaleCentre(Kompas6api3d5com_tlb::IEntity* vert) = 0;
};

// *********************************************************************//
// Interface: IPlaneMiddleDefinition
// Flags:     (16) Hidden
// GUID:      {CACF8C5A-9969-44A1-A36D-4CF516200920}
// *********************************************************************//
interface IPlaneMiddleDefinition  : public IUnknown
{
public:
  // [-1] Получить указатель на интерфейс опорного объекта с указанным номером.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetObject(long number) = 0;
  // [-1] Установить указатель на интерфейс опорного объекта с указанным номером.
  virtual long STDMETHODCALLTYPE SetObject(long number, Kompas6api3d5com_tlb::IEntity* val) = 0;
  // [-1] Получить положение плоскости (TRUE - Положение 1, FALSE - Положение 2).
  virtual long STDMETHODCALLTYPE GetPosition(void) = 0;
  // [-1] Установить положение плоскости (TRUE - Положение 1, FALSE - Положение 2).
  virtual long STDMETHODCALLTYPE SetPosition(long val) = 0;
  // [-1] Получить интерфейс математической поверхности.
  virtual Kompas6api3d5com_tlb::ISurface* STDMETHODCALLTYPE GetSurface(void) = 0;
};

// *********************************************************************//
// Interface: IControlPointDefinition
// Flags:     (16) Hidden
// GUID:      {BF0F6CEC-F517-4094-B913-6B0A28E7CA83}
// *********************************************************************//
interface IControlPointDefinition  : public IUnknown
{
public:
  // [-1] Получить указатель на интерфейс опорной вершины.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetVertex(void) = 0;
  // [-1] Установить указатель на интерфейс опорной вершины.
  virtual long STDMETHODCALLTYPE SetVertex(Kompas6api3d5com_tlb::IEntity* val) = 0;
  // [-1] Получить точку.
  virtual long STDMETHODCALLTYPE GetPoint(double* x, double* y, double* z) = 0;
};

// *********************************************************************//
// Interface: IConjunctivePointDefinition
// Flags:     (16) Hidden
// GUID:      {F53A02E1-C560-4DE3-9E19-0D634FBE49A5}
// *********************************************************************//
interface IConjunctivePointDefinition  : public IUnknown
{
public:
  // [-1] Получить указатель на интерфейс опорной вершины.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetVertex(void) = 0;
  // [-1] Установить указатель на интерфейс опорной вершины.
  virtual long STDMETHODCALLTYPE SetVertex(Kompas6api3d5com_tlb::IEntity* val) = 0;
  // [-1] Получить указатель на интерфейс опорного объекта для определения вектора направления.
  virtual Kompas6api3d5com_tlb::IEntity* STDMETHODCALLTYPE GetEdge(void) = 0;
  // [-1] Установить указатель на интерфейс опорного объекта для определения вектора направления.
  virtual long STDMETHODCALLTYPE SetEdge(Kompas6api3d5com_tlb::IEntity* val) = 0;
  // [-1] Получить направление (TRUE - Прямое направление, FALSE - Обратное направление).
  virtual long STDMETHODCALLTYPE GetDirection(void) = 0;
  // [-1] Установить направление (TRUE - Прямое направление, FALSE - Обратное направление).
  virtual long STDMETHODCALLTYPE SetDirection(long val) = 0;
  // [-1] Получить точку.
  virtual long STDMETHODCALLTYPE GetPoint(double* x, double* y, double* z) = 0;
};

// *********************************************************************//
// Interface: IAggregateDefinition
// Flags:     (16) Hidden
// GUID:      {2CF40627-9D0A-4588-A399-45F0FF96165F}
// *********************************************************************//
interface IAggregateDefinition  : public IUnknown
{
public:
  // [-1] Установить тип операции  над телами.
  virtual long STDMETHODCALLTYPE SetBooleanType(long val) = 0;
  // [-1] Получить тип операции над телами.
  virtual long STDMETHODCALLTYPE GetBooleanType(void) = 0;
  // [-1] Получить массив тел.
  virtual Kompas6api3d5com_tlb::IBodyCollection* STDMETHODCALLTYPE BodyCollection(void) = 0;
};

// *********************************************************************//
// Interface: IDefaultObject
// Flags:     (16) Hidden
// GUID:      {8E54CAEA-D1FC-4FF4-A0E5-4F5A9F5CDC6B}
// *********************************************************************//
interface IDefaultObject  : public IUnknown
{
public:
  // [-1] Получить интерфейс математической поверхности для базовой плоскости.
  virtual Kompas6api3d5com_tlb::ISurface* STDMETHODCALLTYPE GetSurface(void) = 0;
  // [-1] Получить интерфейс математической кривой для базовых осей.
  virtual Kompas6api3d5com_tlb::ICurve3D* STDMETHODCALLTYPE GetCurve3D(void) = 0;
};

// *********************************************************************//
// Interface: IEmbodiment3D
// Flags:     (16) Hidden
// GUID:      {4C69F05F-981C-4183-8DC6-D2D375D29581}
// *********************************************************************//
interface IEmbodiment3D  : public IUnknown
{
public:
};

// *********************************************************************//
// Interface: ILineSeg3dParam
// Flags:     (16) Hidden
// GUID:      {FE1515C7-7003-4EE2-9C65-0429039DD217}
// *********************************************************************//
interface ILineSeg3dParam  : public IUnknown
{
public:
  // [-1] Получить первую точку линии.
  virtual long STDMETHODCALLTYPE GetPointFirst(double* x, double* y, double* z) = 0;
  // [-1] Получить последнюю точку линии.
  virtual long STDMETHODCALLTYPE GetPointLast(double* x, double* y, double* z) = 0;
};

// *********************************************************************//
// Interface: ICircle3dParam
// Flags:     (16) Hidden
// GUID:      {9B2FED02-5FAC-4473-9E64-9BDF8B331E10}
// *********************************************************************//
interface ICircle3dParam  : public IUnknown
{
public:
  // [-1] Получить  СК окружности.
  virtual Kompas6api3d5com_tlb::IPlacement* STDMETHODCALLTYPE GetPlacement(void) = 0;
  // [-1] Получить  радиус окружности.
  virtual double STDMETHODCALLTYPE GetRadius(void) = 0;
};

// *********************************************************************//
// Interface: IEllipse3dParam
// Flags:     (16) Hidden
// GUID:      {1DD50F18-9C19-424C-B20E-77E1369976E3}
// *********************************************************************//
interface IEllipse3dParam  : public IUnknown
{
public:
  // [-1] Получить СК еллипса - центр и плоскость.
  virtual Kompas6api3d5com_tlb::IPlacement* STDMETHODCALLTYPE GetPlacement(void) = 0;
  // [-1] Получить больший радиус.
  virtual double STDMETHODCALLTYPE GetMajorRadius(void) = 0;
  // [-1] Получить меньший радиус.
  virtual double STDMETHODCALLTYPE GetMinorRadius(void) = 0;
};

// *********************************************************************//
// Interface: IPlaneParam
// Flags:     (16) Hidden
// GUID:      {9C412B77-BFDE-4D60-B8C7-BD849801975E}
// *********************************************************************//
interface IPlaneParam  : public IUnknown
{
public:
  // [-1] Получить  СК плоскости.
  virtual Kompas6api3d5com_tlb::IPlacement* STDMETHODCALLTYPE GetPlacement(void) = 0;
};

// *********************************************************************//
// Interface: IConeParam
// Flags:     (16) Hidden
// GUID:      {105943CF-5A3E-4AA6-4AA6-57B4179013FC}
// *********************************************************************//
interface IConeParam  : public IUnknown
{
public:
  // [-1] Получить  радиус основания.
  virtual double STDMETHODCALLTYPE GetRadius(void) = 0;
  // [-1] Получить  высоту поверхности.
  virtual double STDMETHODCALLTYPE GetHeight(void) = 0;
  // [-1] Получить  угол образующей поверхности( для цилиндра 0).
  virtual double STDMETHODCALLTYPE GetAngle(void) = 0;
  // [-1] Получить  СК основания.
  virtual Kompas6api3d5com_tlb::IPlacement* STDMETHODCALLTYPE GetPlacement(void) = 0;
};

// *********************************************************************//
// Interface: ICylinderParam
// Flags:     (16) Hidden
// GUID:      {A2899CA0-C84E-4C16-BFB2-E8DA69FC117E}
// *********************************************************************//
interface ICylinderParam  : public IUnknown
{
public:
  // [-1] Получить радиус основания.
  virtual double STDMETHODCALLTYPE GetRadius(void) = 0;
  // [-1] Получить высоту поверхности.
  virtual double STDMETHODCALLTYPE GetHeight(void) = 0;
  // [-1] Получить СК основания.
  virtual Kompas6api3d5com_tlb::IPlacement* STDMETHODCALLTYPE GetPlacement(void) = 0;
};

// *********************************************************************//
// Interface: ISphereParam
// Flags:     (16) Hidden
// GUID:      {941163AA-0F8A-422A-BE1A-9F43C8001044}
// *********************************************************************//
interface ISphereParam  : public IUnknown
{
public:
  // [-1] Получить радиус сферы.
  virtual double STDMETHODCALLTYPE GetRadius(void) = 0;
  // [-1] Получить СК сферы.
  virtual Kompas6api3d5com_tlb::IPlacement* STDMETHODCALLTYPE GetPlacement(void) = 0;
};

// *********************************************************************//
// Interface: ITorusParam
// Flags:     (16) Hidden
// GUID:      {C9C614A7-E8B6-4454-AC8B-E42330C11E15}
// *********************************************************************//
interface ITorusParam  : public IUnknown
{
public:
  // [-1] Получить  радиус центров.
  virtual double STDMETHODCALLTYPE GetRadius(void) = 0;
  // [-1] Получить  радиус образующей.
  virtual double STDMETHODCALLTYPE GetGeneratrixRadius(void) = 0;
  // [-1] Получить  СК.
  virtual Kompas6api3d5com_tlb::IPlacement* STDMETHODCALLTYPE GetPlacement(void) = 0;
};

// *********************************************************************//
// Interface: IArc3dParam
// Flags:     (16) Hidden
// GUID:      {24A26824-E13C-453F-8874-A0DF62AB595A}
// *********************************************************************//
interface IArc3dParam  : public IUnknown
{
public:
  // [-1] Получить СК основания.
  virtual Kompas6api3d5com_tlb::IPlacement* STDMETHODCALLTYPE GetPlacement(void) = 0;
  // [-1] Получить радиус дуги.
  virtual double STDMETHODCALLTYPE GetRadius(void) = 0;
  // [-1] Получить угол раствора дуги.
  virtual double STDMETHODCALLTYPE GetAngle(void) = 0;
};

// *********************************************************************//
// Interface: ISTrackingPointsMeasurer
// Flags:     (16) Hidden
// GUID:      {4DEA35BC-F9E0-4A3E-B815-FB55896FC8EF}
// *********************************************************************//
interface ISTrackingPointsMeasurer  : public IUnknown
{
public:
  // [-1] Установить точку первого сегмента.
  virtual void STDMETHODCALLTYPE SetPoint1(double x, double y, double z, long begin) = 0;
  // [-1] Установить точку второго сегмента.
  virtual void STDMETHODCALLTYPE SetPoint2(double x, double y, double z, long begin) = 0;
  // [-1] Установить радиус рассчета для первой точки.
  virtual void STDMETHODCALLTYPE SetRadius1(double val) = 0;
  // [-1] Установить радиус рассчета для второй точки.
  virtual void STDMETHODCALLTYPE SetRadius2(double val) = 0;
  // [-1] Рассчитать точки.
  virtual int STDMETHODCALLTYPE Calculate(void) = 0;
  // [-1] Получить расчитанную точку 1.
  virtual void STDMETHODCALLTYPE GetResultPoint1(double* x, double* y, double* z) = 0;
  // [-1] Получить расчитанную точку 2.
  virtual void STDMETHODCALLTYPE GetResultPoint2(double* x, double* y, double* z) = 0;
};

// *********************************************************************//
// Interface: IDocument3DNotify
// Flags:     (16) Hidden
// GUID:      {EE5B4795-6E76-49A2-BFAD-9D953D82771F}
// *********************************************************************//
interface IDocument3DNotify  : public Kompas6api2d5com_tlb::IKompasNotify
{
public:
  // [-1] Начало перестроения модели.
  virtual VARIANT_BOOL STDMETHODCALLTYPE BeginRebuild(void) = 0;
  // [-1] Модель перестроена.
  virtual VARIANT_BOOL STDMETHODCALLTYPE Rebuild(void) = 0;
  // [-1] Начало выбора материала.
  virtual VARIANT_BOOL STDMETHODCALLTYPE BeginChoiceMaterial(void) = 0;
  // [-1] Закончен выбор материала.
  virtual VARIANT_BOOL STDMETHODCALLTYPE ChoiceMaterial(LPSTR material, double density) = 0;
  // [-1] Начало выбора обозначения.
  virtual VARIANT_BOOL STDMETHODCALLTYPE BeginChoiceMarking(void) = 0;
  // [-1] Закончен выбор обозначения.
  virtual VARIANT_BOOL STDMETHODCALLTYPE ChoiceMarking(LPSTR marking) = 0;
  // [-1] Начало установки компонента в сборку (до диалога выбора имени).
  virtual VARIANT_BOOL STDMETHODCALLTYPE BeginSetPartFromFile(void) = 0;
  // [-1] Начало создания компонента в сборке  (до диалога выбора имени).
  virtual VARIANT_BOOL STDMETHODCALLTYPE BeginCreatePartFromFile(VARIANT_BOOL typeDoc, 
                                                                 Kompas6api3d5com_tlb::IEntity* plane) = 0;
  // [-1] Добавлено новое исполнение.
  virtual VARIANT_BOOL STDMETHODCALLTYPE CreateEmbodiment(LPSTR marking) = 0;
  // [-1] Удалено исполнение.
  virtual VARIANT_BOOL STDMETHODCALLTYPE DeleteEmbodiment(LPSTR marking) = 0;
  // [-1] Исполение установлено текущим.
  virtual VARIANT_BOOL STDMETHODCALLTYPE ChangeCurrentEmbodiment(LPSTR marking) = 0;
  // [-1] Начало выбора свойства.
  virtual VARIANT_BOOL STDMETHODCALLTYPE BeginChoiceProperty(LPUNKNOWN obj, double propID) = 0;
  // [-1] Закончен выбор свойства.
  virtual VARIANT_BOOL STDMETHODCALLTYPE ChoiceProperty(LPUNKNOWN obj, double propID) = 0;
  // [-1] Начало отката дерева модели.
  virtual VARIANT_BOOL STDMETHODCALLTYPE BeginRollbackFeatures(void) = 0;
  // [-1] Завершение отката дерева модели.
  virtual VARIANT_BOOL STDMETHODCALLTYPE RollbackFeatures(void) = 0;
  // [-1] Начало переключения типа загрузки.
  virtual VARIANT_BOOL STDMETHODCALLTYPE BedinLoadCombinationChange(long index) = 0;
  // [-1] Завершение переключения типа загрузки.
  virtual VARIANT_BOOL STDMETHODCALLTYPE LoadCombinationChange(long index) = 0;
};

// *********************************************************************//
// Interface: IObject3DNotify
// Flags:     (16) Hidden
// GUID:      {7B4657BB-68D9-4CA8-BA81-52C1D5C96943}
// *********************************************************************//
interface IObject3DNotify  : public Kompas6api2d5com_tlb::IKompasNotify
{
public:
  // [-1] Начало удаления объекта.
  virtual VARIANT_BOOL STDMETHODCALLTYPE BeginDelete(LPUNKNOWN obj) = 0;
  // [-1] Oбъекты удалены.
  virtual VARIANT_BOOL STDMETHODCALLTYPE Delete(LPUNKNOWN obj) = 0;
  // [-1] Oбъект исключен/включен в расчет.
  virtual VARIANT_BOOL STDMETHODCALLTYPE Excluded(LPUNKNOWN obj, VARIANT_BOOL exclude) = 0;
  // [-1] Oбъект скрыт/показан.
  virtual VARIANT_BOOL STDMETHODCALLTYPE Hidden(LPUNKNOWN obj, VARIANT_BOOL _hidden) = 0;
  // [-1] Начало изменения свойств объета.
  virtual VARIANT_BOOL STDMETHODCALLTYPE BeginPropertyChanged(LPUNKNOWN obj) = 0;
  // [-1] Изменены свойства объета.
  virtual VARIANT_BOOL STDMETHODCALLTYPE PropertyChanged(LPUNKNOWN obj) = 0;
  // [-1] Начало изменения положения объета.
  virtual VARIANT_BOOL STDMETHODCALLTYPE BeginPlacementChanged(LPUNKNOWN obj) = 0;
  // [-1] Изменено положения объета.
  virtual VARIANT_BOOL STDMETHODCALLTYPE PlacementChanged(LPUNKNOWN obj) = 0;
  // [-1] Начало редактированиясоздания объекта.false - запрещает процесс.
  virtual VARIANT_BOOL STDMETHODCALLTYPE BeginProcess(long pType, LPUNKNOWN obj) = 0;
  // [-1] Конец редактированиясоздания объекта.
  virtual VARIANT_BOOL STDMETHODCALLTYPE EndProcess(long pType) = 0;
  // [-1] Создание объекта.
  virtual VARIANT_BOOL STDMETHODCALLTYPE CreateObject(LPUNKNOWN obj) = 0;
  // [-1] Редактирование объекта.
  virtual VARIANT_BOOL STDMETHODCALLTYPE UpdateObject(LPUNKNOWN obj) = 0;
  // [-1] Начало изменения типа загрузки.
  virtual VARIANT_BOOL STDMETHODCALLTYPE BeginLoadStateChange(LPUNKNOWN obj, long loadState) = 0;
  // [-1] Завершение изменения типа загрузки.
  virtual VARIANT_BOOL STDMETHODCALLTYPE LoadStateChange(LPUNKNOWN obj, long loadState) = 0;
};

// *********************************************************************//
// Interface: IProcess3DNotify
// Flags:     (16) Hidden
// GUID:      {0712DCCC-83E0-429E-AB8C-5B255DD3C4E4}
// *********************************************************************//
interface IProcess3DNotify  : public Kompas6api2d5com_tlb::IKompasNotify
{
public:
  // [-1] Изменение положения.
  virtual VARIANT_BOOL STDMETHODCALLTYPE PlacementChange(LPUNKNOWN obj) = 0;
  // [-1] Выполнить команду.
  virtual VARIANT_BOOL STDMETHODCALLTYPE ExecuteCommand(long command) = 0;
  // [-1] Запуск процесса.
  virtual VARIANT_BOOL STDMETHODCALLTYPE Run(void) = 0;
  // [-1] Остановка процесса.
  virtual VARIANT_BOOL STDMETHODCALLTYPE Stop(void) = 0;
  // [-1] Активизация процесса.
  virtual VARIANT_BOOL STDMETHODCALLTYPE Activate(void) = 0;
  // [-1] Деактивизация процесса.
  virtual VARIANT_BOOL STDMETHODCALLTYPE Deactivate(void) = 0;
  // [-1] Фильтрация объетов.
  virtual VARIANT_BOOL STDMETHODCALLTYPE FilterObject(LPUNKNOWN obj) = 0;
  // [-1] Создание объекта в подпроцессе.
  virtual VARIANT_BOOL STDMETHODCALLTYPE CreateTakeObject(LPUNKNOWN obj) = 0;
  // [-1] Окончание процесса.
  virtual VARIANT_BOOL STDMETHODCALLTYPE EndProcess(void) = 0;
  // [-1] Обработать объекты, пришедшие при селектировании рамкой.
  virtual VARIANT_BOOL STDMETHODCALLTYPE ProcessingGroupObjects(VARIANT groupObjects, 
                                                                long selectionType) = 0;
  // [-1] Прерывание процесса при запуске другого процесса или команды.
  virtual VARIANT_BOOL STDMETHODCALLTYPE AbortProcess(void) = 0;
};

// *********************************************************************//
// Interface: IProcess3DManipulatorsNotify
// Flags:     (16) Hidden
// GUID:      {45B82B5C-D0B7-4AC5-965C-26B09612CBF6}
// *********************************************************************//
interface IProcess3DManipulatorsNotify  : public Kompas6api2d5com_tlb::IKompasNotify
{
public:
  // [-1] Вращение манипулятора относительно оси на угол.
  virtual VARIANT_BOOL STDMETHODCALLTYPE RotateManipulator(long ManipulatorId/*[in]*/, 
                                                           double X0/*[in]*/, double Y0/*[in]*/, 
                                                           double Z0/*[in]*/, double AxisZX/*[in]*/, 
                                                           double AxisZXY/*[in]*/, 
                                                           double AxisZZ/*[in]*/, 
                                                           double angle/*[in]*/, 
                                                           VARIANT_BOOL FromEdit/*[in]*/) = 0;
  // [-1] Перемещение манипулятора.
  virtual VARIANT_BOOL STDMETHODCALLTYPE MoveManipulator(long ManipulatorId/*[in]*/, 
                                                         double VX/*[in]*/, double VY/*[in]*/, 
                                                         double VZ/*[in]*/, double Delta/*[in]*/, 
                                                         VARIANT_BOOL FromEdit/*[in]*/) = 0;
  // [-1] Клик или двойной клик по примитиву манипулятора.
  virtual VARIANT_BOOL STDMETHODCALLTYPE ClickManipulatorPrimitive(long ManipulatorId/*[in]*/, 
                                                                   long PrimitiveType/*[in]*/, 
                                                                   VARIANT_BOOL DoubleClick/*[in]*/) = 0;
  // [-1] Начало таскания манипулятора за примитив.
  virtual VARIANT_BOOL STDMETHODCALLTYPE BeginDragManipulator(long ManipulatorId/*[in]*/, 
                                                              long PrimitiveType/*[in]*/) = 0;
  // [-1] Завершение таскания манипулятора за примитив.
  virtual VARIANT_BOOL STDMETHODCALLTYPE EndDragManipulator(long ManipulatorId/*[in]*/, 
                                                            long PrimitiveType/*[in]*/) = 0;
  // [-1] Создание редактора для ввода значения управляющего положением манипулятора.
  virtual VARIANT_BOOL STDMETHODCALLTYPE CreateManipulatorEdit(long ManipulatorId/*[in]*/, 
                                                               long PrimitiveType/*[in]*/) = 0;
  // [-1] Удаление редактора для ввода значения управляющего положением манипулятора.
  virtual VARIANT_BOOL STDMETHODCALLTYPE DestroyManipulatorEdit(long ManipulatorId/*[in]*/) = 0;
  // [-1] Завершение редактирования значения в редакторе манипулятора.
  virtual VARIANT_BOOL STDMETHODCALLTYPE ChangeManipulatorValue(long ManipulatorId/*[in]*/, 
                                                                long PrimitiveType/*[in]*/, 
                                                                double newValue/*[in]*/) = 0;
};

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)
typedef TComInterface<IDocument3D>  TCOMIDocument3D;

typedef TComInterface<IPart>  TCOMIPart;

typedef TComInterface<IColorParam>  TCOMIColorParam;

typedef TComInterface<IEntity>  TCOMIEntity;

typedef TComInterface<IFeature>  TCOMIFeature;

typedef TComInterface<IFeatureCollection>  TCOMIFeatureCollection;

typedef TComInterface<IAttribute3DCollection>  TCOMIAttribute3DCollection;

typedef TComInterface<IAttribute3D>  TCOMIAttribute3D;

typedef TComInterface<IEntityCollection>  TCOMIEntityCollection;

typedef TComInterface<IVariableCollection>  TCOMIVariableCollection;

typedef TComInterface<IVariable>  TCOMIVariable;

typedef TComInterface<IBodyCollection>  TCOMIBodyCollection;

typedef TComInterface<IBody>  TCOMIBody;

typedef TComInterface<IFaceCollection>  TCOMIFaceCollection;

typedef TComInterface<IFaceDefinition>  TCOMIFaceDefinition;

typedef TComInterface<ISurface>  TCOMISurface;

typedef TComInterface<ICurve3D>  TCOMICurve3D;

typedef TComInterface<INurbs3dParam>  TCOMINurbs3dParam;

typedef TComInterface<INurbsPoint3dCollection>  TCOMINurbsPoint3dCollection;

typedef TComInterface<INurbsPoint3dParam>  TCOMINurbsPoint3dParam;

typedef TComInterface<INurbsKnotCollection>  TCOMINurbsKnotCollection;

typedef TComInterface<ICoordinate3dCollection>  TCOMICoordinate3dCollection;

typedef TComInterface<INurbsSurfaceParam>  TCOMINurbsSurfaceParam;

typedef TComInterface<INurbsPoint3dCollCollection>  TCOMINurbsPoint3dCollCollection;

typedef TComInterface<ILoopCollection>  TCOMILoopCollection;

typedef TComInterface<ILoop>  TCOMILoop;

typedef TComInterface<IOrientedEdgeCollection>  TCOMIOrientedEdgeCollection;

typedef TComInterface<IOrientedEdge>  TCOMIOrientedEdge;

typedef TComInterface<IEdgeDefinition>  TCOMIEdgeDefinition;

typedef TComInterface<IVertexDefinition>  TCOMIVertexDefinition;

typedef TComInterface<IEdgeCollection>  TCOMIEdgeCollection;

typedef TComInterface<ITessellation>  TCOMITessellation;

typedef TComInterface<IFacet>  TCOMIFacet;

typedef TComInterface<IMassInertiaParam>  TCOMIMassInertiaParam;

typedef TComInterface<IIntersectionResult>  TCOMIIntersectionResult;

typedef TComInterface<IBodyParts>  TCOMIBodyParts;

typedef TComInterface<IPlacement>  TCOMIPlacement;

typedef TComInterface<IMeasurer>  TCOMIMeasurer;

typedef TComInterface<IObject3DNotifyResult>  TCOMIObject3DNotifyResult;

typedef TComInterface<IPartCollection>  TCOMIPartCollection;

typedef TComInterface<IRequestInfo>  TCOMIRequestInfo;

typedef TComInterface<IMateConstraintCollection>  TCOMIMateConstraintCollection;

typedef TComInterface<IMateConstraint>  TCOMIMateConstraint;

typedef TComInterface<ISpecification3D>  TCOMISpecification3D;

typedef TComInterface<IRasterFormatParam>  TCOMIRasterFormatParam;

typedef TComInterface<IAdditionFormatParam>  TCOMIAdditionFormatParam;

typedef TComInterface<IViewProjectionCollection>  TCOMIViewProjectionCollection;

typedef TComInterface<IViewProjection>  TCOMIViewProjection;

typedef TComInterface<ISelectionMng>  TCOMISelectionMng;

typedef TComInterface<IChooseMng>  TCOMIChooseMng;

typedef TComInterface<IComponentPositioner>  TCOMIComponentPositioner;

typedef TComInterface<IDocument3DNotifyResult>  TCOMIDocument3DNotifyResult;

typedef TComInterface<IModelLibrary>  TCOMIModelLibrary;

typedef TComInterface<IThinParam>  TCOMIThinParam;

typedef TComInterface<IExtrusionParam>  TCOMIExtrusionParam;

typedef TComInterface<IRotatedParam>  TCOMIRotatedParam;

typedef TComInterface<IObjectsFilter3D>  TCOMIObjectsFilter3D;

typedef TComInterface<IChooseBodies>  TCOMIChooseBodies;

typedef TComInterface<IChooseParts>  TCOMIChooseParts;

typedef TComInterface<ISketchDefinition>  TCOMISketchDefinition;

typedef TComInterface<IThreadDefinition>  TCOMIThreadDefinition;

typedef TComInterface<IAxis2PointsDefinition>  TCOMIAxis2PointsDefinition;

typedef TComInterface<IAxis2PlanesDefinition>  TCOMIAxis2PlanesDefinition;

typedef TComInterface<IAxisOperationsDefinition>  TCOMIAxisOperationsDefinition;

typedef TComInterface<IAxisEdgeDefinition>  TCOMIAxisEdgeDefinition;

typedef TComInterface<IPlaneOffsetDefinition>  TCOMIPlaneOffsetDefinition;

typedef TComInterface<IPlane3PointsDefinition>  TCOMIPlane3PointsDefinition;

typedef TComInterface<IPlaneAngleDefinition>  TCOMIPlaneAngleDefinition;

typedef TComInterface<IPlaneEdgePointDefinition>  TCOMIPlaneEdgePointDefinition;

typedef TComInterface<IPlaneParallelDefinition>  TCOMIPlaneParallelDefinition;

typedef TComInterface<IPlanePerpendicularDefinition>  TCOMIPlanePerpendicularDefinition;

typedef TComInterface<IPlaneNormalToSurfaceDefinition>  TCOMIPlaneNormalToSurfaceDefinition;

typedef TComInterface<IPlaneTangentToSurfaceDefinition>  TCOMIPlaneTangentToSurfaceDefinition;

typedef TComInterface<IPlaneLineToEdgeDefinition>  TCOMIPlaneLineToEdgeDefinition;

typedef TComInterface<IPlaneLineToPlaneDefinition>  TCOMIPlaneLineToPlaneDefinition;

typedef TComInterface<IBaseExtrusionDefinition>  TCOMIBaseExtrusionDefinition;

typedef TComInterface<IBossExtrusionDefinition>  TCOMIBossExtrusionDefinition;

typedef TComInterface<ICutExtrusionDefinition>  TCOMICutExtrusionDefinition;

typedef TComInterface<IBaseRotatedDefinition>  TCOMIBaseRotatedDefinition;

typedef TComInterface<IBossRotatedDefinition>  TCOMIBossRotatedDefinition;

typedef TComInterface<ICutRotatedDefinition>  TCOMICutRotatedDefinition;

typedef TComInterface<IBaseLoftDefinition>  TCOMIBaseLoftDefinition;

typedef TComInterface<IBossLoftDefinition>  TCOMIBossLoftDefinition;

typedef TComInterface<ICutLoftDefinition>  TCOMICutLoftDefinition;

typedef TComInterface<IBaseEvolutionDefinition>  TCOMIBaseEvolutionDefinition;

typedef TComInterface<IBossEvolutionDefinition>  TCOMIBossEvolutionDefinition;

typedef TComInterface<ICutEvolutionDefinition>  TCOMICutEvolutionDefinition;

typedef TComInterface<IFilletDefinition>  TCOMIFilletDefinition;

typedef TComInterface<IChamferDefinition>  TCOMIChamferDefinition;

typedef TComInterface<IShellDefinition>  TCOMIShellDefinition;

typedef TComInterface<ICopyMeshDefinition>  TCOMICopyMeshDefinition;

typedef TComInterface<IDeletedCopyCollection>  TCOMIDeletedCopyCollection;

typedef TComInterface<ICopyCircularDefinition>  TCOMICopyCircularDefinition;

typedef TComInterface<ICopyCurveDefinition>  TCOMICopyCurveDefinition;

typedef TComInterface<IMirrorDefinition>  TCOMIMirrorDefinition;

typedef TComInterface<IMirrorAllDefinition>  TCOMIMirrorAllDefinition;

typedef TComInterface<ICutByPlaneDefinition>  TCOMICutByPlaneDefinition;

typedef TComInterface<ICutBySketchDefinition>  TCOMICutBySketchDefinition;

typedef TComInterface<IMeshPartArrayDefinition>  TCOMIMeshPartArrayDefinition;

typedef TComInterface<ICircularPartArrayDefinition>  TCOMICircularPartArrayDefinition;

typedef TComInterface<ICurvePartArrayDefinition>  TCOMICurvePartArrayDefinition;

typedef TComInterface<IDerivativePartArrayDefinition>  TCOMIDerivativePartArrayDefinition;

typedef TComInterface<IInclineDefinition>  TCOMIInclineDefinition;

typedef TComInterface<IRibDefinition>  TCOMIRibDefinition;

typedef TComInterface<IImportedSurfaceDefinition>  TCOMIImportedSurfaceDefinition;

typedef TComInterface<IPolygonalLineDefinition>  TCOMIPolygonalLineDefinition;

typedef TComInterface<IPolygonalLineVertexParam>  TCOMIPolygonalLineVertexParam;

typedef TComInterface<IConicSpiralDefinition>  TCOMIConicSpiralDefinition;

typedef TComInterface<ISplineDefinition>  TCOMISplineDefinition;

typedef TComInterface<ICylindricSpiralDefinition>  TCOMICylindricSpiralDefinition;

typedef TComInterface<IEvolutionSurfaceDefinition>  TCOMIEvolutionSurfaceDefinition;

typedef TComInterface<IExtrusionSurfaceDefinition>  TCOMIExtrusionSurfaceDefinition;

typedef TComInterface<IRotatedSurfaceDefinition>  TCOMIRotatedSurfaceDefinition;

typedef TComInterface<ILoftSurfaceDefinition>  TCOMILoftSurfaceDefinition;

typedef TComInterface<IMacro3DDefinition>  TCOMIMacro3DDefinition;

typedef TComInterface<IAxisConefaceDefinition>  TCOMIAxisConefaceDefinition;

typedef TComInterface<IUnionComponentsDefinition>  TCOMIUnionComponentsDefinition;

typedef TComInterface<IMoldCavityDefinition>  TCOMIMoldCavityDefinition;

typedef TComInterface<IPlaneMiddleDefinition>  TCOMIPlaneMiddleDefinition;

typedef TComInterface<IControlPointDefinition>  TCOMIControlPointDefinition;

typedef TComInterface<IConjunctivePointDefinition>  TCOMIConjunctivePointDefinition;

typedef TComInterface<IAggregateDefinition>  TCOMIAggregateDefinition;

typedef TComInterface<IDefaultObject>  TCOMIDefaultObject;

typedef TComInterface<IEmbodiment3D>  TCOMIEmbodiment3D;

typedef TComInterface<ILineSeg3dParam>  TCOMILineSeg3dParam;

typedef TComInterface<ICircle3dParam>  TCOMICircle3dParam;

typedef TComInterface<IEllipse3dParam>  TCOMIEllipse3dParam;

typedef TComInterface<IPlaneParam>  TCOMIPlaneParam;

typedef TComInterface<IConeParam>  TCOMIConeParam;

typedef TComInterface<ICylinderParam>  TCOMICylinderParam;

typedef TComInterface<ISphereParam>  TCOMISphereParam;

typedef TComInterface<ITorusParam>  TCOMITorusParam;

typedef TComInterface<IArc3dParam>  TCOMIArc3dParam;

typedef TComInterface<ISTrackingPointsMeasurer>  TCOMISTrackingPointsMeasurer;

typedef TComInterface<IDocument3DNotify>  TCOMIDocument3DNotify;

typedef TComInterface<IObject3DNotify>  TCOMIObject3DNotify;

typedef TComInterface<IProcess3DNotify>  TCOMIProcess3DNotify;

typedef TComInterface<IProcess3DManipulatorsNotify>  TCOMIProcess3DManipulatorsNotify;

#endif  //   __TLB_NO_INTERFACE_WRAPPERS


};     // namespace Kompas6api3d5com_tlb

#if !defined(NO_IMPLICIT_NAMESPACE_USE)
using  namespace Kompas6api3d5com_tlb;
#endif

#pragma option pop

#endif // Kompas6API3D5COM_TLBH
